2015-05-02 2 views
0

Я не понимаю, почему эти значения продолжают уменьшаться с шагом . Поскольку вторая петля заканчивается на половине длины исходного массива.Нужна помощь в поиске значений массивов

+2

Получите себе карандаш, резину и лист бумаги. Нарисуйте строку из десяти ящиков на бумаге - они могут представлять 'массив [0]' до 'array [9]'. Затем вручную выполните код, набирая числа в этих блоках, как и назначения в массиве. Возможно, вам понадобится еще одна ячейка для 'i' и еще одна ячейка для' temp'. –

+0

Не могли бы вы изменить свой вопрос, чтобы включить сообщение об ошибке, которое вы получаете при компиляции? –

+0

Я удалил его. На данный момент это не большая проблема для меня. – dendritic

ответ

1

Причина, почему я не понимая эту проблему, потому что я не был полностью понять смысл массивов. Помните, что array [#] - это позиция внутри определенного массива; # в этом положении не всегда будет равно значению в этом положении.

Первый цикл устанавливает позиции от 0 до 9 со значениями, умноженными на 2. Затем второй массив заменяет значения в этих позициях.

Например, массив [8] не означает, что int temp равно 8. Это просто означает, что позиция 8 в массиве будет EQUAL для массива [1] из самого первого массива. Затем мы устанавливаем исходное положение массива, равное временному значению, которое является AT-позицией 8.

Теперь, чтобы понять, почему он продолжает уменьшать свое приращение на 2 после 10, поскольку второй цикл закончился в позиции 4, один должны смотреть на этой линии:

array [array.length – 1 - i] = array[i]; 

Например, когда массив [9] = массив [0], вы устанавливаете значение 18 от температуры в положение 0. Но вы должны смотреть на этой линии ДВАЖДЫ. Позиция массива в точке 9 будет равна значению 0, так как 0 - значение в позиции массива [0].

1

Я проверил ваш код просто отлично. Первый цикл создает массив и присваивает ему значения i * 2. 'i' итерации между 0 и 10, создает четные числа от 0 до 10 * 2.

Второй цикл выполняет итерацию через половину значений, переключая наибольшее значение с наименьшим значением. Он успешно меняет массив. Ошибок не найдено, хорошая работа.

+0

Да. Но я не понимаю, почему значения продолжают уменьшаться на 2 после 10. Поскольку второй цикл останавливается на половине, не следует ли начинать с 10 до 12 и так далее до 18? – dendritic

1

Что здесь неторопливо? В первом цикле вы присваиваете значения 0, 2, 4, ...., 18 массиву [0], массиву [1], ..., массиву [9]. Во втором цикле вы просто просто меняете массив, заменяя значения массива [0] с помощью массива [9], массива [1] с помощью массива [8], ... и т. Д. Таким образом, 18, 16, ... 0 являются правильными

1

Да. Но я не понимаю, почему значения продолжают уменьшаться на 2 после 10. Так как второй цикл останавливается на половине, не следует ли начинать с 10 до 12 и так далее до 18? - fer0n 3 часа назад

Это было бы верно, если вы удалили эту строку:

array [array.length – 1 - i] = array[i]; 
Смежные вопросы