Существует ли способ убежать некоторое время из цикла, прежде чем исходное условие будет сделано ложью?
например, если я имею:
while (a==true)
{
doSomething() ;
if (d==false) get out of loop ;
doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true() ;
}
Есть ли какой-либо способ сделать это?
Используйте оператор break
.
if (!d) break;
Обратите внимание, что вам не нужно сравнивать с true
или false
в логическом выражении.
while ( doSomething() && doSomethingElse() );
измените сигнатуру возврата ваших методов так, чтобы d == doSomething ()
и a == doSomethingElse ()
. У них уже должны быть побочные эффекты, если ваш цикл когда-нибудь исчезнет.
Если вам нужна начальная проверка такого значения, запускать цикл или нет, вы можете бросить if
впереди.
Выполните следующие действия Обратите внимание на использование фигурных скобок - это хорошая практика программирования
while (a==true)
{
doSomething() ;
if (d==false) { break ; }
else { /* Do something else */ }
}
break
- это команда, которую вы ищете.
И не сравнивайте с логическими константами - на самом деле это просто скрывает ваш смысл. Вот альтернативная версия:
while (a)
{
doSomething();
if (!d)
break;
doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true();
}
Да, используйте оператор break
.
while (a==true)
{
doSomething() ;
if (d==false) break;
doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true() ;
}
Попробуйте следующее:
if(d==false) break;
Это называется "немаркированным" оператором break, и его цель - завершить , а
, для
и do-while
] петли.