Переделал , всё ровно не правильно, хоть выводит как надо. Что не так?)
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) {
int count = 0;
for (int i = 0; i < array.length; i++){
if(array[i] == null) count++;
else array[i-count] = array[i];}
int finalka = array.length - count;
for (;finalka < array.length ; finalka++) {
array[finalka] = null;}
}
}
Космос Космический
17 уровень
Подскажите что я не так делаю?
Решен
Комментарии (17)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Revizor Работает в Нет
12 августа 2021, 22:05полезный
и еще совет
пиши скобки не в строку.... так легче понять где перебор, а где недобор
+1
Revizor Работает в Нет
12 августа 2021, 22:04
Сброшу часть кода, это не решение, но вектор)
one[o]=array[i];
o++;
}
}
for (int i = 0; i < array.length; i++){
array[i] = one[i];
}
0
Галкин Юрий
12 августа 2021, 19:56
На этом случае кажется сыпится.
0
Космос Космический
12 августа 2021, 20:14
в методе main я ничего не меннял, это стандартные условия
0
Ksenia Volkova Java Developer в DXC Master
12 августа 2021, 20:21полезный
Условия стандартные, а массив может меняться. Твой метод должен правильно работать в любом случае.
Строка
никак не меняет исходный массив. Ты просто в локальную переменную array помещаешь ссылку на другой объект. +1
Космос Космический
12 августа 2021, 22:59
да,вот я понимаю,что в самом методе массив правильно перестраивается,а в мейн этот результат не попадает
0
Космос Космический
12 августа 2021, 23:06
this.array / this.memory не работает)
0
Ksenia Volkova Java Developer в DXC Master
13 августа 2021, 05:42полезный
Нужно изменить сам исходный объект-массив, а не пытаться заменить его на новый.
+1
Космос Космический
13 августа 2021, 22:45
прописал вот так вот метод дефрагментейшн, в main теперь ВРОДЕ бы правильно выводит, но всё ровно не пропускает задачу.
public static void executeDefragmentation(String[] array) {
int count = 0;
for (int i = 0; i < array.length; i++){
if(array[i] == null) count++;
else array[i-count] = array[i];}
for (int gg = count;gg < array.length ; gg++) {
array[gg] = null;}
}}
0
Ksenia Volkova Java Developer в DXC Master
14 августа 2021, 09:19
Проверь на таком массиве
0
Космос Космический
16 августа 2021, 18:47
а почему в части цикла не присваивает ячейке array[2] значение null?
for (;finalka < array.length ; finalka++) {
array[finalka] = null;}
0
Космос Космический
16 августа 2021, 18:48
на сколько я понимаю, начинаю с array[1] ( int finalka = 1) и добавляю +1 каждый виток цикла.
Или меняется только счётчик ? не пойму
0
Дмитрий QA Automation Engineer в DINS
12 августа 2021, 19:13полезный
привет, я думаю, что конец этой статьи тебе поможет разобраться
https://javarush.com/groups/posts/1950-metodih-ikh-parametrih-vzaimodeystvie-i-peregruzka
+1
Космос Космический
12 августа 2021, 23:01
Спасибо,прочитал, вроде бы оно. Но со статьи так и не понял как меня передать обратно готовый,переделанный массив)
Я так понял что тут executeDefragmentation(memory); создается копия memory
0
Дмитрий QA Automation Engineer в DINS
13 августа 2021, 07:39полезный
Как выше тебе правильно ответила Ксения, тебе необходимо поработать с самим массивом, переданным в качестве аргумента (видится решение, по типу пузырьковой сортировки). Если в методе хочется создать новый отсортированный маcсив и заменить старый на данный, то похоже метод должен быть не void.
+1
Космос Космический
13 августа 2021, 23:10
прописал вот так вот метод дефрагментейшн, в main теперь ВРОДЕ бы правильно выводит, но всё ровно не пропускает задачу.
public static void executeDefragmentation(String[] array) {
int count = 0;
for (int i = 0; i < array.length; i++){
if(array[i] == null) count++;
else array[i-count] = array[i];}
for (int gg = count;gg < array.length ; gg++) {
array[gg] = null;}
}}
0
Дмитрий QA Automation Engineer в DINS
14 августа 2021, 10:11
хм, вот тут уже вопрос интересный, а на что ругается, все так же на метод executeDefragmentation? или, возможно, что программа ничего не должна на экран выводить? у меня данная задача еще не открыта...
0