Les instructions break et continue facilitent respectivement la sortie complète et l'arrêt pour l'itération en cours d'une boucle suite à une condition particulière nécessitant une action précise.
while(condition){ // Bloc d'instructions... break; /* sortie de la boucle avant la prochaîne itération
et passage à la prochaine instruction après la boucle */ // Bloc d'instructions... } // Prochaines instructions... while(condition){ // Bloc d'instructions... continue; /* arrêt de la boucle à l'itération en cours
mais passage à l'itération suivante */ // Bloc d'instructions... }
Il est possible d'utiliser des étiquettes (ou labels) avec les instructions continue et break afin d'indiquer au programme le début de l'instruction à reprendre après la sortie d'une itération.
break label; continue label; premiereBoucle: for(i = 0; i < 10; i++) { boucleExterne: for(int j = 0; j <= 4; j++) { if (j == 4) { break premiereBoucle; } for(k = 0; k < 3; k++) { System.out.println('('i + ', ' + j + ', ' + k + ')rn'); continue boucleExterne; } } }
Les deux instructions étiquetées permettent de reprendre les itérations à la première boucle for si j est égal à 4, et à la seconde boucle après l'impression des valeurs i, j et k.
Evidemment, les instructions d'arrêt étiquetées doivent être placées à l'intérieur des boucles désignées par les labels.
int a = 0; Exterieur: for(int i = 0; i < 10; i++){ int j = 0; while(j < 1000){ a++; j++; if(i == 5){ continue Exterieur; } } } System.out.println("a = " + a);
Les labels sont particulièrement utiles lors de l'utilisation de boucles imbriquées dans un programme.
class Boucles { public static void main(String[] args){ premiere_boucle: for(int i = 0; i < 10; i++) { seconde_boucle: for(int j = 0; j < 10; j++) { troisieme_boucle: for(int k = 0; k < 10; k++) { if((i * j * k) == 9) { System.out.println("Sortie Première boucle " + (i * j * k)); continue premiere_boucle; } if((i * j * k) == 125) { System.out.println("Sortie Seconde boucle " + (i * j * k)); continue seconde_boucle; } if((i * j * k) == 343) { System.out.println("Sortie Troisième boucle " + (i * j * k)); continue troisieme_boucle; } } } } } }