Привет. Написал небольшую програмку.
Условие: "Дан массив размера n. После каждого отрицательного элемента массива вставить элемент с нулевым значением".
Я решил её, используя 2 массива ArrayList. Меня интересует, возможно ли получить решение, используя только 1 массив?
Код программы:
public class Task_108 {
public void Task108(){
System.out.println("Input size of array: ");
Scanner scn = new Scanner(System.in);
int sizeArr = scn.nextInt();
ArrayList<Integer> ArrIntNum = new ArrayList<>(sizeArr); // Declare array
Random rnd = new Random();
int val;
// Filling array random elements from -20 to 20
for(int i = 0; i < sizeArr; i++){
val = -20 + rnd.nextInt(41);
ArrIntNum.add(i, val);
}
// Output array on the screen
System.out.println(ArrIntNum.toString());
ArrayList<Integer> ArrWithZeroAftNegVal = new ArrayList<>(); // Declare once more array
// Adding zero after every negative number in array ArrIntNum and write in array ArrWithZeroAftNegVal
for(int i = 0; i < sizeArr; i ++){
if(ArrIntNum.get(i) < 0) {
ArrWithZeroAftNegVal.add(ArrIntNum.get(i));
ArrWithZeroAftNegVal.add(0);
}
else
ArrWithZeroAftNegVal.add(ArrIntNum.get(i));
}
// Output edited array on the screen
System.out.println(ArrWithZeroAftNegVal.toString());
}
}
Если под массивом мы подразумеваем только голый массив, то можно, если до создания массива известно кол-во элементов. Если, как в вашем случае, под массивом подразумевается ArrayList, то реализация элементарна.
Вы путаете понятие массива и списка. В вашем примере используется список. У списков есть метод для добавления нового элемента по индексу. Для этого вы можете воспользоваться перегруженным методом add
:
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
// число 0 встанет на место второго элемента в списке
numbers.add(2, 0);
numbers.forEach(System.out::print);
Но более красивое решение можно получить с двумя списками:
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(-3);
numbers.add(4);
numbers.add(-2);
numbers.add(5);
numbers.add(4);
numbers = numbers
.stream()
.flatMap(number -> number < 0 ? Stream.of(number, 0) : Stream.of(number))
.collect(Collectors.toList());
numbers.forEach(System.out::print);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте уважаемые, такая проблемаОсваиваю градл, запускаю градл проект с интелии и у меня отсутствует Store generated project files externally
У меня есть приложение, которое при старте создаёт вспомогательные процессы, которые общаются с помощью RMI
Не могу разобраться в работе хеш-функцииНе могли вы подсказать основные принципы?