W3docs

L'instruction break en Java

Quittez les boucles et les blocs switch en Java avec l'instruction break, y compris le break avec étiquette.

break est la sortie de secours. Il arrête immédiatement la boucle ou le bloc switch le plus proche dans lequel il se trouve, et l'exécution continue avec ce qui suit. Utilisez-le quand le travail de la boucle est terminé et qu'il n'y a plus de raison de continuer à itérer.

Sortir d'une boucle

for (int i = 0; i < 100; i++) {
  if (i == 5) {
    break;
  }
  System.out.println(i);
}
// continues here

Affiche 0 1 2 3 4 et quitte. La condition de la boucle (i < 100) et la mise à jour (i++) sont abandonnées dès que break s'exécute.

Un cas d'utilisation typique : rechercher un élément et s'arrêter dès qu'on le trouve :

int[] nums = {3, 7, 2, 8, 5};
int target = 8;
int foundAt = -1;

for (int i = 0; i < nums.length; i++) {
  if (nums[i] == target) {
    foundAt = i;
    break;
  }
}
System.out.println("found at index: " + foundAt);

Sans break, vous continueriez à vérifier des éléments dont vous savez déjà qu'ils ne sont pas la réponse.

break dans un while

Fonctionne de manière identique dans while et do/while :

int n = 1;
while (true) {
  if (n > 1000) {
    break;
  }
  n *= 2;
}
System.out.println(n);   // 1024

while (true) { ... break; } est le modèle standard pour « boucler jusqu'à ce qu'une condition décidée à l'intérieur du corps soit remplie ».

break dans un switch

Dans une instruction switch traditionnelle, break quitte le switch — empêchant ainsi de tomber en cascade dans le cas suivant. Vous l'avez vu dans le chapitre sur switch :

switch (cmd) {
  case "start": startServer(); break;
  case "stop":  stopServer();  break;
  default:      help();        break;
}

Les expressions switch sous forme de flèche couvertes dans les expressions switch ne font pas de cascade, donc elles n'ont pas besoin de break.

Avertissement

Un switch placé à l'intérieur d'une boucle est un piège classique : un break écrit pour la boucle quitte en réalité le switch et laisse la boucle continuer à s'exécuter. break cible toujours la boucle ou le switch le plus proche qui l'englobe.

for (String cmd : commands) {
  switch (cmd) {
    case "quit":
      break;          // exits the switch, NOT the for loop — the loop keeps going
    default:
      process(cmd);
  }
}

Pour quitter la boucle depuis l'intérieur du switch, vous avez besoin d'un break avec étiquette (présenté ci-dessous) ou d'un indicateur que la boucle vérifie ensuite.

break ne quitte qu'un seul niveau

break quitte la boucle ou le switch le plus proche qui l'englobe. Dans des boucles imbriquées, il ne quitte que la boucle intérieure :

for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (j == 1) break;     // only exits the inner loop
    System.out.println(i + "," + j);
  }
}

Sortie :

0,0
1,0
2,0

Pour quitter toutes les boucles imbriquées en même temps, utilisez un break avec étiquette — couvert dans les instructions étiquetées :

outer:
for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (i == 1 && j == 1) break outer;
    System.out.println(i + "," + j);
  }
}

break vs return

Si le travail qui suit la boucle est important, utilisez break. Si la méthode n'a plus rien à faire une fois la boucle terminée, retournez directement avec return :

for (int i = 0; i < nums.length; i++) {
  if (nums[i] == target) {
    return i;       // shorter than break + return after the loop
  }
}
return -1;

Les deux sont corrects. return est souvent le choix le plus élégant pour les méthodes de recherche.

Un exemple pratique

java— editable, runs on the server

Et ensuite

break quitte entièrement la boucle. Pour passer simplement à l'itération suivante sans quitter la boucle, utilisez continue.

Exercices

Pratique
Dans une boucle for imbriquée, une instruction break simple...
Dans une boucle for imbriquée, une instruction break simple...
Was this page helpful?