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

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

например, если я имею:

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

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

17
задан David 15 April 2010 в 22:40
поделиться

8 ответов

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

if (!d) break;

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

27
ответ дан 30 November 2019 в 11:22
поделиться
3
ответ дан 30 November 2019 в 11:22
поделиться
while ( doSomething() && doSomethingElse() );

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

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

0
ответ дан 30 November 2019 в 11:22
поделиться
while(a)
{
    doSomething();
    if(!d)
    {
        break;
    }
}
1
ответ дан 30 November 2019 в 11:22
поделиться

Выполните следующие действия Обратите внимание на использование фигурных скобок - это хорошая практика программирования

while (a==true) 
{ 
    doSomething() ; 
    if (d==false) { break ; }
    else { /* Do something else */ }
} 
0
ответ дан 30 November 2019 в 11:22
поделиться

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();
} 
6
ответ дан 30 November 2019 в 11:22
поделиться

Да, используйте оператор 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() ;
} 
1
ответ дан 30 November 2019 в 11:22
поделиться

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

if(d==false) break;

Это называется "немаркированным" оператором break, и его цель - завершить , а , для и do-while ] петли.

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

3
ответ дан 30 November 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: