Подскажите, пожалуйста, почему с таким кодом в консоль выводится следующие значения
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
0, 9, 8, 7, 6, 6, 7, 8, 9, 0,
Почему метод reverseArray не разворачивает массив полностью, а только его половину?
public class Solution {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
printArray(array);
reverseArray(array);
printArray(array);
}
public static void reverseArray(int[] array) {
for (int i = 0; i < array.length ; i++) {
array[i] = array[array.length - 1 - i];
}
}
public static void printArray(int[] array) {
for (int i : array) {
System.out.print(i + ", ");
}
System.out.println();
}
Anonymous #2812035
35 уровень
Где ошибка?
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #2812035
23 января 2022, 19:24
спасибо всем большое
0
ОльгаExpert
21 января 2022, 19:00
Доходя до середины ты перезаписываешь элементы.
0
Denis Kolesnikov
20 января 2022, 09:45
Ты не переносишь элементы массива,а просто заменяешь элементы из правой на элементы из левой половины.
Для переноса необходимо использовать временную переменную,куда ты сохраняешь значение левой половины.
int t = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = t;
0
PixtaExpert
20 января 2022, 08:47
у вас метод reverseArray меняет первую половину чисел, а потом, т.к. вы уже изменили первые числа и будет их использовать.
При i = 6 _ 0, 9, 8, 7, 6, >6<, 7, 8, 9, 0
array[6] = array [5] // 6 = 6
и т.д.
0