« Salut Amigo !

"Salut Ellie."

"Vous avez déjà étudié les boucles, et c'est cool."

"Je suis d'accord ! Maintenant, je ne sais absolument pas comment vivre sans eux."

"Parfois, vous pouvez vous en passer... Mais le plus souvent, vous en aurez besoin. Aujourd'hui, nous allons parler de la situation où vous devez sortir d'une boucle plus tôt que prévu."

"Voulez-vous dire, lorsque la condition pour continuer la boucle est vraie, mais que vous devez toujours sortir de la boucle ?"

"Exactement ! Parfois, on dirait que vous êtes déjà un programmeur. Quoi qu'il en soit, pour sortir d'une boucle plus tôt que prévu, vous pouvez utiliser l' instruction break . Jetez un œil à l'exemple suivant :

Code Explication
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Le programme lira une ligne du clavier, jusqu'à ce que vous saisissiez "exit".

"Je vois. Le programme lit les lignes de la console. Si vous entrez "exit", la isExitvariable devient true, la condition de la boucle sera , et la boucle se terminera."!isExitfalse

"C'est vrai. Ainsi, Java a une breakinstruction spéciale qui vous permet de simplifier une telle logique. Si une breakinstruction est exécutée à l'intérieur d'une boucle, la boucle se termine immédiatement. Le programme commencera à exécuter l'instruction qui suit la boucle. L'instruction est très brève :

break;

"Voici comment vous pouvez utiliser l' breakinstruction pour réécrire l'exemple dont nous venons de parler :

Code Explication
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Le programme lira une ligne du clavier, jusqu'à ce que vous saisissiez "exit".

"Peut-être que je m'en souviendrai. Je sens que ça me sera utile."

"Mais breakce n'est pas la seule instruction Java qui vous permet de contrôler le comportement d'une boucle. Java a également l' continueinstruction. Si vous exécutez une continueinstruction à l'intérieur d'une boucle, l'itération actuelle de la boucle se terminera plus tôt que prévu."

« Qu'entendez-vous par itération ? »

"Une itération de boucle est une exécution du corps de la boucle. L' continueinstruction interrompt l'itération actuelle de la boucle, mais contrairement à l' breakinstruction, elle ne termine pas la boucle elle-même. L'instruction est également brève :

continue;

"Ainsi, l' continueinstruction peut être utilisée dans une boucle si nous voulons 'sauter' l'exécution de certaines itérations de la boucle ?"

"Exactement. Comprenez-vous la différence entre breaketcontinue ? Si vous avez besoin de trouver un sept parmi 20 chiffres non répétitifs, quel type d'instruction de boucle et d'interruption de boucle utiliseriez-vous ?

"Hmm... Je passerais en revue tous les nombres, et si je trouve 7, alors j'exécuterais un break."

"Et si vous avez besoin d'afficher des nombres de 1à 20sauf pour les nombres divisibles par 7?"

"Eh bien, ici, j'ai probablement besoin de continue, puisque je ne veux pas sortir de la boucle. Mais je ne comprends toujours pas très bien."

"Laissez-moi vous montrer comment résoudre ce problème. Voici à quoi pourrait ressembler ce code."

Code Explication
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Le programme affiche les nombres de 1à 20. Si le nombre est divisible par 7(le reste de la division par 7est 0 ), alors nous sautons l'affichage du nombre.

"Pourquoi me regardes-tu avec tant de méfiance, Ellie ? Y a-t-il un piège ici ?"

"Tu ne peux pas être dupe, Amigo ! En effet, ce code ne fonctionnera pas correctement . Il affichera les 6 premiers chiffres, puis irestera à jamais collé sur le numéro 7. Après tout, l' continueénoncé saute deux autres énoncés : System.out.println(i)et i++. Comme Par conséquent, une fois que nous aurons atteint la valeur 7, la variable icessera de changer et nous serons dans une boucle infinie. J'ai écrit le code de cette façon exprès pour illustrer une erreur très courante.

"Comment pouvons-nous résoudre ce problème?"

"Il y a deux options ici:"

Option 1 : modifier iavant d'exécuter continue, mais aprèsi % 7

Option 2 : toujours incrémenter iau début de la boucle. Mais alors ila valeur de départ doit être 0.

Option 1 Option 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

"Excellent ! Je vais essayer de ne pas faire cette erreur."

« Je me souviendrai de ta promesse !