public class Memory {
public static void main(String[] args) {
String[] memory = {"object15", null, null, "object2", null, null, null, "object32", null, "object4"};
executeDefragmentation(memory);
System.out.println(Arrays.toString(memory));
}
public static void executeDefragmentation(String[] array) {
String[] temp = new String[array.length];
int j = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] != null) {
temp[j] = array[I]; // отправляем элементы не null в новый массив , а куда деваются null? ну то есть как они откидываются именно в конец как нам надо
j++;
}
}
for (int i = 0; i < array.length; i++) {
array[i] = temp[I]; // зачем этот цикл? и почему тут temp [i], а не temp[j] как было сверху
}
}
}
Serafima Tatchenkova
11 уровень
я не могу представить в голове, как это работает
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAExpert
25 августа 2021, 17:00решение
При первом проходе цикла i = 0 проверяется array[0] != null
После первого прохода j = 1, i = 1, temp = {"object15", null, null, null, null, null, null, null, null, null};
+4
KIRAExpert
25 августа 2021, 17:06решение
После в array идут 2 null, условие выполняться не будет и просто будет увеличиваться i, но не j
При j = 1, i = 3, temp = {"object15", null, null, null, null, null, null, null, null, null};
После прохода j = 2, i = 4, temp = {"object15", "object2", null, null, null, null, null, null, null, null};
Ну и тд до конца +4
KIRAExpert
25 августа 2021, 17:21решение
Конечный результат temp = {"object15", "object2", "object32", "object4", null, null, null, null, null, null};
Осталось перенести эти изменения в массив который отправили на дефрагментацию
Все из temp переносим в array
+4
Serafima Tatchenkova
25 августа 2021, 18:18
большое спасибо
0