Может кто-нибудь объяснить построчно что происходит в методе reverse()?
Зачем переменная temp? Зачем size() делить на 2 в цикле? Зачем переменная n?
И как вообще надо рассуждать в таких задачах (не важно задача с массивом или ArrayList'ом)?
Кто разбирается, пожалуйста объясните "на пальцах".
random4real
17 уровень
Объясните пожалуйста
Решен
Комментарии (10)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей Коваленко
4 мая 2021, 06:23
Метод reverse()
Первая строка тела int n = numbers.length - 1. Здесь в переменной n сохраняем индекс последнего элемента.
Вторая строка for (int i = 0; i < numbers.length / 2; i++). Счетчик от 0 до половины длины массива.
Третья строка int temp = numbers[i].В переменную temp сохраняем ссылку на первый элемент массива (нужно для того, чтобы не потерять ссылку, тк следующим действием мы эту ссылку затираем и если не сохраним ее сейчас, то потеряем навсегда)
Четвертая строка numbers[i] = numbers[n - i]. Первому элементу присваиваем ссылку на последний элемент (n-i это индекс последнего элемента). Здесь немного останавливаемся и видим, что мы идем от начала (индекс i) и от конца (индекс n-i - это значение будет уменьшаться по мере инкремента i) к середине массива numbers.length / 2. Как меняются значения можно увидеть если поставить точку останова и запустить дебаг.
В пятой строке numbers[n - i] = temp Присваиваем ссылку на первый элемент последнему элементу.
Таким образом после первого прохода цикла мы первому элементу присвоили значение последнего, а последнему - значение первого. Следующим проходом мы присвоим значение предпоследнего элемента - второму, а значение второго элемента - предпоследнему.
+9
random4real
4 мая 2021, 08:16
Спасибо за помощь. Теперь врубился. Массивы для меня больная тема.
0
Сергей Коваленко
4 мая 2021, 08:28
👍, рад что не зря написал)
0
Mike-L
3 мая 2021, 19:29
Зачем переменная temp? Зачем size() делить на 2 в цикле? Зачем переменная n?
temp - это имя переменной(может быть любым в принципе), просто так обозначили в задаче - "временная" - в неё мы просто что-то складываем (как в первых лекциях описано) - то есть допустим временные данные с которыми работаем (строки, примитивы и т.п.)
n - это тоже переменная (типа как number в задачах, i или j в циклах) - в неё мы тоже что-то складываем
size() делить на 2 в цикле? - это и похожие примеры проще посмотреть в задачах про массивы (комментарии или просто по разделу помощи поискать задачи) там как раз много примеров можно найти и методов реализации в коде (логика)
про reverse() варианты с объяснением в коде (логики) тыц или тыц
А так желательно бы код самой задачи (если конкретно по ней стопор)
+1
random4real
4 мая 2021, 07:56
код задачи...
+1
Mike-L
4 мая 2021, 08:07
другой пользователь выше уже подробно расписал что происходит в коде) дебаг юзаешь?
0
random4real
4 мая 2021, 08:14
Нет. Задачи решаю на самом сайте. Иногда прогоняю через идею.
Спасибо за ответ.
+1
Mike-L
4 мая 2021, 08:45
Без проблем. Я дебаг сразу как только массивы начались стал юзать. Вот линк и линк посмотри про массивы и примеры (код, реализация, логика, ну и теория)
0
Flexo Bending Unit #3370318
3 мая 2021, 18:58
Прикрепите пожалуйста задачу или опубликуйте условие в комментариях
Потому что отвечают в основном люди, которые проходили квест Java Syntax
и задачи с Syntax Pro нам недоступны
0
random4real
4 мая 2021, 07:54
вот..
0