Java

Ребят почему оба элемента массива принимают одинаковое значение? JAVA

a[1] - должна принять значение из a[2] (тоесть цифру 2)
а a[2] должна принять значение из a[1] (тоесть единицу)
Почему оба элемента массива приняли единицу? Где ошибка ?
Дмитрий Рохин
Дмитрий Рохин
38 419
У тебя написано for(int i = 1; i <= 10; i++), это значит что начальная точка отсчёта будет идти с 1.
int i =1 -это первый индекс цикла, с которого начнётся первая итерация.

1. У тебя первой итерацией идёт a[1] = 1;
2. потом проверяется условие в If (при первом проходе оно не выполняется) т. к. если бы ты прочёл книгу, знал бы что все переменные int без инициализации - по умолчанию равны 0.
3.ВЫВОДИТ 1
4. i++ (то есть i = 2 уже)
5. Новая итерация - i[2] = 2;
6. Проверяется условие в if - и оно выполняется т. к. i[1] < i[2] - истинно
7. j = a[1] (то есть j = 1)
8. a[1] = a[2] (теперь a[1] равно 2)
9. a[2] = j (теперь a[2] = 1)
10. ВЫВОДИТ 1
11. i++
11. Цикл повторяется.... и потом уже будут выводиться числа по порядку (3, 4, 5, и т. д.) без изменений т. к. по сути - изменения в if больше не повлияют на вывод елементов с высшим индексом.
p.s. ОБЯЗАТЕЛЬНО - прочитать книгу Хорстмана " Java основы - 1 том" или Эккеля "Философия Java".
Евгений Шабанов
Евгений Шабанов
1 038
Лучший ответ
Нумерация идёт с нуля вроде, как в сях.
При первой проверке значение a[2] в лучшем случае 0
Делай выводы
Роман Барашков
Роман Барашков
82 203
при первом проходе цикла if не выполняется и выдается 1 а при втором проходе цикла if выполняется и меняет 2 на 1 так и получается две 1
изучай циклы и операторы условия, надо знать как они работают.
Дмитрий Рохин Кажется понял. Но почему при первом проходе не выполняется? Потому что в начале идет a[0] а не a[1] ?