Member 13983435 Ответов: 2

Почему я не могу использовать оператор 'less than' (<) в цикле for при уменьшении


Привет, я думаю, это действительно глупый вопрос, но:
почему --&ГТ; для (тип int я = 1000; я &ГТ;=1; я=2) системы.из.код println(I); в (отпечатки УМК я)

---> for (int i = 1000; i <=1; i-=2) System.out.println(i); (нет ошибок, нет печати на экране)

Почему при вводе <= cmd не реагирует и не отображает уменьшающуюся итерацию ?

Спасибо Вам в addvance!

Что я уже пробовал:

для (int i = 1000; i <=1; i-=2)
для (int i = 1000; i <1; i-=2)

Bryian Tan

подумайте об этом, изначально я буду 1000, там ни в коем случае 1000 < 1

2 Ответов

Рейтинг:
11

Peter Leow

Во-первых, изучите это Последовательность выполнения цикла for[^]
в случае с

for (int i = 1000; i <=1; i-=2) System.out.println(i); 

1. инициализация: i инициализируется до 1000, то есть i=1000, затем он переходит к 2;
2. Условие: результат i <= 1, то есть 1000 <= 1, является ложным, выход из цикла, как таковой
System.out.println(i);
никогда не будет казнен.


Member 13983435

Я вижу, в этом есть смысл
Большое вам спасибо за быстрый ответ (Y)

Рейтинг:
1

W∴ Balboos, GHB

for (int i = 1000; i <=1; i-=2)
for (int i = 1000; i <1; i-=2) 



Посмотри на свой код. Вы начинаете с того, что i<1 является ложным, поэтому он ничего не делает

Когда вы используете версию >=, вы не прерываете немедленно.

Вам нужно переосмыслить порядок неравенства!


Member 13983435

В обоих случаях cmd ничего не печатает
для (int i = 1000; i <=1; i-=2)
для (int i = 1000; i <1; i-=2)
..и мне интересно, почему?
Что я понимаю, так это то, что когда у нас есть i++, нужно использовать < и когда я-мы должны использовать > Знак. Только после этого программа печатается .
Но я до сих пор не понимаю, почему именно.

Dave Kreskowiak

Вы просто следуете визуальному шаблону, но у вас нет понимания того, что делает каждая часть утверждения "за".

В заявлении "За" говорится следующее:

    for( initializer; bail out condition; step )

Использование вашего 1-го цикла в качестве примера:

1. Начните с i, имеющего значение 1000.
2. Если i меньше или равно 1, запустите код в цикле, в противном случае выйдите из цикла.
3. Когда код в цикле будет завершен, уменьшите i на 2.
4. Вернитесь к Шагу 2.

Цикл ничего не делает, потому что i больше 1. Код в цикле никогда не выполняется.

Ваша вторая петля:
1. Начните с i, имеющего значение 1000.
2. Если i меньше 1, запустите код в цикле, в противном случае выйдите из цикла.
3. Когда код в цикле будет завершен, уменьшите i на 2.
4. Вернитесь к Шагу 2.

Та же проблема. Значение i больше 1, а не меньше, поэтому код в цикле никогда не выполняется.

Member 13983435

Я не знал, что петля так работает :) теперь я знаю, и большое Вам за это спасибо