2016-11-23 1 views
-2

Я обнаружил, что у меня есть оператор возврата внутри моей петли. Спасибо за помощь в любом случае.Что происходит, когда цикл for не имеет выражения инкремента в Java?

Я столкнулся с циклом for в Java, который не имеет выражения increment/decment. На самом деле, моя IDE говорит мне, что выражение - это мертвый код.

Loop без выражения инкремента/декремента:

for(int i = 5; i!=0;) 
    //Do something... 

Тогда всякий раз, когда я пытаюсь добавить i-- так:

for(int i = 5; i!=0; i--) 

Мой IDE говорит мне, что i-- мертв код, который меня смущает, как я не вижу, как я изменюсь. Итак, мой вопрос: как этот цикл работает на Java? Это бесконечный цикл? Уменьшает ли JVM i на свой собственный? Etc ...

Minimal Пример:

for(int i=10; i!=0;i--) 
    //Do something... 

Complete:

public void methodName(int number){ 
    for(int i = number; i!=0; i--) 
    //Do something... 
+1

Можете ли вы разместить [mcve]? Судя по тому, что одна строка сама по себе, удаление 'i -' неверно. Это вызовет бесконечный цикл, если только 'i' не изменено внутри тела цикла. –

+0

@JohnKugelman Да. Один момент ... –

+0

Если вы хотите бесконечный цикл, просто используйте 'while (true)' или что-то еще. –

ответ

0

Следует должны работать для всех, я ', которые меньше, чем 5.

Таким образом, вы должны напишите петлю for как:

for(int i = 5; i>=0; i--) 

И это будет бесконечный цикл:

for(int i = 5; i!=0;){ 
    System.out.println(i); 
} 

Поскольку он будет продолжать работать для всех I, которые не равны 0.

+0

Я знаю, что это сработает, но я хотел бы знать конкретно, что будет делать цикл без выражения increment/decment. Кроме того, может потребоваться, чтобы их цикл выполнялся бесконечно, если i меньше нуля, а '! =' Кажется хорошим способом сделать это. –

+0

Нет ничего плохого в том, чтобы иметь 'i! = 0'. –

3

Короткий ответ:

for (int i = 5; i != 0;) { 
    System.out.println(i); 
} // , 

Выведет целое 5 навсегда.

Это эквивалент:

int i = 5; 
while (i != 0) { 
    System.out.println(i); 
} 

Он выводит 5 навсегда, потому что i является всегда 5 и i является всегда отличается от 0. Для того, чтобы избежать петли, вы должны явно обновить значение i, пока оно не держит значение 0.

Смежные вопросы