2010-04-15 13 views
17

C'è un modo per interrompere un ciclo while prima che la condizione originale sia falsa?C'è un modo per interrompere un ciclo while prima che la condizione originale sia falsa?

per esempio se ho:

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

C'è un modo di fare questo?

+8

Mi piace che la domanda abbia la risposta 5 parole in ... Come posso uscire da questo ciclo? :) – RodeoClown

+2

Inoltre, invece di usare while (a == true), puoi usare solo mentre (a). E per il se, puoi usare se (! D). – RodeoClown

+2

Fai una domanda di auto-risposta e otterrai una risposta auto-interrogativa. – Duncan

risposta

26

Utilizzare il break statement.

if (!d) break; 

Si noti che non è necessario confrontare con true o false in un'espressione booleana.

+0

Potrebbe non essere necessario, ma è possibile che si desideri una leggibilità. –

+10

@Matt: Per questo preferirei rinominare il nome della variabile in qualcosa di più sensibile :) – BalusC

+0

+ 1 per il tuo commento – hhafez

5

break è il comando che stai cercando.

E non confrontare con le costanti booleane: in realtà oscura solo il tuo significato. Ecco una versione alternativa:

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

Sì, utilizzare la dichiarazione 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() ; 
} 
3

Prova questa:

if(d==false) break; 

Questo viene chiamato istruzione break "senza etichetta", e il suo scopo è di terminare while, for e do-while loop.

Reference here.

+4

Non dovresti promuovere l'uso di '== false' (e' == true' e '! = False' e'! = True'). – polygenelubricants

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

fare il seguente nota l'inserimento di parentesi graffe - la sua buona pratica di programmazione

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

modificare la firma ritorno dei tuoi metodi tale che d==doSomething() e a==doSomethingElse(). Devono già avere effetti collaterali se il tuo loop è mai sfuggito.

Se è necessario un test iniziale di valore in modo da avviare o meno il ciclo, è possibile lanciare un if nella parte anteriore.

Problemi correlati