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