web-dev-qa-db-ja.com

元の条件がfalseになる前にwhileループから抜け出す方法はありますか?

元の条件がfalseになる前に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() ;
} 

これを行う方法はありますか?

17
David

breakステートメント を使用します。

if (!d) break;

ブール式でtrueまたはfalseと比較する必要がないことに注意してください。

27
BalusC

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
Carl Manaster

これを試して:

if(d==false) break;

これは「ラベルなし」breakステートメントと呼ばれ、その目的はwhilefor、およびdo-whileループを終了することです。

ここを参照

3
Matthew Jones
3
Ben S

はい、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
João Silva
while(a)
{
    doSomething();
    if(!d)
    {
        break;
    }
}
1
mportiz08

次のことを行います。中括弧が含まれていることに注意してください-その優れたプログラミング手法

while (a==true) 
{ 
    doSomething() ; 
    if (d==false) { break ; }
    else { /* Do something else */ }
} 
0
Chris
_while ( doSomething() && doSomethingElse() );
_

d==doSomething()およびa==doSomethingElse()のようにメソッドの戻りシグネチャを変更します。ループがエスケープされた場合、それらにはすでに副作用があるはずです。

ループを開始するかどうかなどの値の初期テストが必要な場合は、前面にifを投げることができます。

0
Carl