Cela fonctionne en effet, mais le comportement dépend des conditions que vous testez. Par exemple. ce code:
int i = 2;
int j = 4;
do while(j > 0) {
i--; j--;
System.out.println("i:" + i + " j:" + j);
} while(i > 0);
sorties:
i:1 j:3
i:0 j:2
i:-1 j:1
i:-2 j:0
Il fonctionne comme:
while(j>0) {
}
considérant que, par l'échange des noms de variables:
do while(i > 0) {
//.. same as above
} while(j > 0);
La sortie est:
i:1 j:3
i:0 j:2
On dirait qu'il se comporte comme dans le premier cas (à savoir le premier est considéré), mais ici, l'application ne se termine pas!
Résumé:
Au moment où testA
est pas satisfait plus et testB
est pas satisfait, le code fonctionne comme une boucle while(testA){}
normale.
Mais: Si, au moment où testA
est ne se contente plus, testB
est toujours satisfaite, la boucle est pas exécuté plus et le script est ne pas mettre fin. Ceci s'applique uniquement si la condition de la boucle "externe" doit être modifiée à l'intérieur de la boucle.
Mise à jour: Et après avoir lu autre réponse, je me rends compte que c'est exactement le comportement du do-while
imbriquée - boucle while
.
Quoi qu'il en soit, leçon apprise: N'utilisez pas ce type de syntaxe parce qu'elle peut vous déranger;)
Le comportement que vous devriez vous attendre est qu'un collègue vous frappe avec un bâton. – voyager
@voyager Heureusement, je n'ai pas de collègues à surveiller; Merci quand même pour le conseil! – Pindatjuh