Есть ли способ вырваться из цикла while, прежде чем исходное условие станет ложным?

Есть ли способ вырваться из цикла while до того, как исходное условие станет ложным?

например, если у меня есть:

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() ;
} 

Есть ли способ сделать это?

Ответы

Ответ 1

Используйте оператор break.

if (!d) break;

Обратите внимание, что вам не нужно сравнивать с true или false в булевом выражении.

Ответ 2

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();
} 

Ответ 3

Попробуйте следующее:

if(d==false) break;

Это называется операцией "немеченого" разрыва, и ее целью является завершение циклов while, for и do-while.

Ссылка здесь.

Ответ 5

Да, используйте оператор 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() ;
} 

Ответ 6

while(a)
{
    doSomething();
    if(!d)
    {
        break;
    }
}

Ответ 7

Сделайте следующее Обратите внимание на включение брекетов - его хорошая практика программирования

while (a==true) 
{ 
    doSomething() ; 
    if (d==false) { break ; }
    else { /* Do something else */ }
} 

Ответ 8

while ( doSomething() && doSomethingElse() );

измените обратную подпись ваших методов таким образом, чтобы d==doSomething() и a==doSomethingElse(). Они должны иметь побочные эффекты, если ваша петля никогда не ускользает.

Если вам нужен начальный тест такого значения, чтобы начать или нет цикл, вы можете бросить if на передней панели.