Funziona davvero, ma il comportamento dipende da quali condizioni si stanno testando. Per esempio. questo codice:
int i = 2;
int j = 4;
do while(j > 0) {
i--; j--;
System.out.println("i:" + i + " j:" + j);
} while(i > 0);
uscite:
i:1 j:3
i:0 j:2
i:-1 j:1
i:-2 j:0
Così funziona così:
while(j>0) {
}
considerando che con lo scambio dei nomi delle variabili:
do while(i > 0) {
//.. same as above
} while(j > 0);
L'output è:
i:1 j:3
i:0 j:2
Sembra che comporta come nel primo caso (ossia il primo è considerato), ma qui, l'applicazione non sta terminando!
Sommario:
Nel momento in cui è testA
non è soddisfatto più e testB
è anche non soddisfatti, il codice funziona come un normale while(testA){}
ciclo.
Ma: Se, nel momento in cui è testA
non è più soddisfatta, testB
è ancora soddisfatto, il ciclo è non eseguita più e lo script è non terminare. Questo si applica solo se la condizione del ciclo "esterno" deve essere modificata all'interno del ciclo.
Aggiornamento: e dopo aver letto altra risposta, mi rendo conto che questo è esattamente il comportamento del nidificato do-while
- while
loop.
In ogni caso, abbiamo imparato la lezione: non utilizzare questo tipo di sintassi perché può confondere;)
fonte
2010-03-12 17:41:16
Il comportamento si dovrebbe aspettare è che un collega ti colpisce con un bastone. – voyager
@voyager Fortunatamente non ho nessun collega a cui prestare attenzione; grazie per il consiglio però! – Pindatjuh