2010-04-15 3 views
17

Gibt es eine Möglichkeit, aus einer while-Schleife auszubrechen, bevor die ursprüngliche Bedingung falsch gemacht wird?Gibt es eine Möglichkeit, aus einer while-Schleife auszubrechen, bevor die ursprüngliche Bedingung falsch gemacht wird?

zum Beispiel, wenn ich:

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

Gibt es eine Möglichkeit, dies zu tun?

+8

Ich liebe, dass die Frage die Antwort hat 5 Wörter in ... Wie kann ich aus dieser Schleife "brechen"? :) – RodeoClown

+2

Auch - statt mit while (a == wahr), können Sie einfach while (a) verwenden. Und für das if können Sie if (! D) verwenden. – RodeoClown

+2

Stellen Sie eine selbstbeantwortete Frage und Sie erhalten eine selbstbeantwor- tende Antwort. – Duncan

Antwort

26

Verwenden Sie die break statement.

if (!d) break; 

Beachten Sie, dass Sie nicht brauchen, mit true oder false in einem Booleschen Ausdruck zu vergleichen.

+0

Sie müssen es möglicherweise nicht, aber Sie möchten vielleicht zur besseren Lesbarkeit. –

+10

@Matt: Dafür würde ich lieber den Variablennamen in etwas sensibler umbenennen :) – BalusC

+0

+ 1 für Ihren Kommentar – hhafez

5

break ist der Befehl, den Sie suchen.

Und nicht mit booleschen Konstanten vergleichen - es verdeckt nur Ihre Bedeutung. Hier ist eine alternative Version:

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

Ja, verwenden Sie die break Anweisung.

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

Try this:

if(d==false) break; 

Dies wird eine "unmarkierten" break-Anweisung genannt, und ihr Zweck ist while, for und do-while Schleifen zu beenden.

Reference here.

+4

Sie sollten die Verwendung von '== false' (und' == true' und '! = False' und'! = True') nicht fördern. – polygenelubricants

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

Sie wie folgt vor Hinweis die Aufnahme von Klammern - seine guten Programmier

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

Änderung der Rückgabe Signatur Ihrer Methoden, so dass d==doSomething() und a==doSomethingElse(). Sie müssen bereits Nebenwirkungen haben, wenn Ihre Schleife jemals entkommt.

Wenn Sie einen ersten Test von so Wert benötigen, ob die Schleife zu starten oder nicht, können Sie eine if auf der Vorderseite werfen.

Verwandte Themen