« 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 |
---|---|
|
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 isExit
variable devient true
, la condition de la boucle sera , et la boucle se terminera."!isExit
false
"C'est vrai. Ainsi, Java a une break
instruction spéciale qui vous permet de simplifier une telle logique. Si une break
instruction 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' break
instruction pour réécrire l'exemple dont nous venons de parler :
Code | Explication |
---|---|
|
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 break
ce n'est pas la seule instruction Java qui vous permet de contrôler le comportement d'une boucle. Java a également l' continue
instruction. Si vous exécutez une continue
instruction à 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' continue
instruction interrompt l'itération actuelle de la boucle, mais contrairement à l' break
instruction, elle ne termine pas la boucle elle-même. L'instruction est également brève :
continue;
"Ainsi, l' continue
instruction 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 break
etcontinue
? 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
à 20
sauf 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 |
---|---|
|
Le programme affiche les nombres de 1 à 20 . Si le nombre est divisible par 7 (le reste de la division par 7 est 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 i
restera à 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 i
cessera 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 i
avant d'exécuter continue
, mais aprèsi % 7
Option 2 : toujours incrémenter i
au début de la boucle. Mais alors i
la valeur de départ doit être 0
.
Option 1 | Option 2 |
---|---|
|
|
"Excellent ! Je vais essayer de ne pas faire cette erreur."
« Je me souviendrai de ta promesse !
GO TO FULL VERSION