Страницы

Поиск по вопросам

понедельник, 2 декабря 2019 г.

Бесконечный цикл for в java

#java #циклы


Почему при таком построение цикла for, получается бесконечные вывод нулей?

int i;
for (i = 0; i < 10; i = i++) {
    System.out.println(i);
}

    


Ответы

Ответ 1



Ваше выражение: i = i++. Что здесь происходит по шагам: Сначала i = 0. Вычисляется значение после знака равно. Это ноль: result = i = 0. Вычисляется постфиксный инкремент. Теперь i = i+1 = 1. Результат выражения записывается в i. В итоге: i = result = 0. Можно заменить на: i = ++i. Тогда: Сначала i = 0. Вычисляется префиксный инкремент. Теперь i = i+1 = 1. Вычисляется значение после знака равно: result = i = 1. Результат выражения записывается в i. В итоге: i = result = 1. В общем, постфиксный инкремент в операторе присваивания над той же переменной ничего полезного не делает. Отсюда и Ваш бесконечный цикл.

Ответ 2



Оператор i++ есть краткая запись i=i+1. Но есть вариант написания ++i или i++. Разница в том, когда происходит операция инкремента, до обращения к переменной или после. В Вашем случае сначала значение i присваивается переменной i, а потом происходит инкремент, но значение его не сохраняется. Вот если вы напишете ++i, тогда все как надо будет работать.

Ответ 3



Нужно исправить в последнем значении параметров цикла на: for(int i=0; i<10; i++){ System.out.println(i); } В твоем случае после каждой итерации цикла ты присваиваешь i = 0 (так как ++ происходит уже после присваивания), и цикл снова обрабатывает i=0

Комментариев нет:

Отправить комментарий