цикл для Java с "true" в качестве условия остановки? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть программа, которую нужно реализовать, которая имеет следующий код:

for (int n = 1024; true; n+=n)

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

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Основы для выражения описаны в спецификации языка :

for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

Вы спрашиваете о случае, когда Expression равно true.(Квадратные скобки выше означают, что это необязательно).

Значение этого описано ниже, в Sec 14.14.1.2 :

  • Если Выражение отсутствует или присутствует и значение, полученное в результате его оценки (включая возможную распаковку), имеет значение true, то содержащийся Оператор выполняется.

...

  • Если присутствует выражение и значение, полученное в результате его оценки (включая возможную распаковку), равно false, то дальшедействие выполнено, и утверждение завершается нормально.

Итак, Expression присутствует и оценивается в true (потому что true оценивается в true).Следовательно, Statement выполняется и будет выполняться, потому что Expression остается true.

Как таковой, это бесконечный цикл (если нет разрыва, возврата, броска или System.exit внутри петли).

0 голосов
/ 06 декабря 2018

Почему вы не используете другой цикл?Используйте, например, do-while вместо

for (int n = 1024; true; n+=n)

. Вы можете обойти с помощью:

int n=1024;
do{ 
//your code
n+=n;
}while(condition==false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...