"Hallo Amigo!
"Hoi Elly."
"Je hebt loops al bestudeerd, en dat is cool."
"Ik ben het ermee eens! Nu weet ik totaal niet hoe ik zonder hen moet leven."
"Soms kun je het zonder doen... Maar vaker zul je ze nodig hebben. Vandaag gaan we het hebben over de situatie waarin je eerder uit de lus moet komen dan gepland."
"Bedoel je, wanneer de voorwaarde om de lus voort te zetten waar is, maar je de lus nog steeds moet verlaten?"
"Precies! Soms klinkt het alsof je al een programmeur bent. Hoe dan ook, om eerder dan gepland uit een lus te komen, kun je de instructie break gebruiken . Kijk eens naar het volgende voorbeeld:
Code | Uitleg |
---|---|
|
Het programma leest een regel van het toetsenbord totdat u invoert "exit" . |
"Ik snap het. Het programma leest regels van de console. Als je invoert "exit"
, wordt de isExit
variabele , wordt true
de lusvoorwaarde en eindigt de lus."!isExit
false
"Dat klopt. Java heeft dus een speciale break
instructie waarmee je dergelijke logica kunt vereenvoudigen. Als een break
instructie binnen een lus wordt uitgevoerd, eindigt de lus onmiddellijk. Het programma begint met het uitvoeren van de instructie die volgt op de lus. De instructie is erg kort :
break;
"Hier is hoe je de break
verklaring kunt gebruiken om het voorbeeld dat we zojuist hebben besproken te herschrijven:
Code | Uitleg |
---|---|
|
Het programma leest een regel van het toetsenbord totdat u invoert "exit" . |
'Misschien zal ik dat onthouden. Ik heb het gevoel dat het van pas zal komen.'
"Maar break
het is niet de enige Java-instructie waarmee je het gedrag van een lus kunt regelen. Java heeft ook de continue
instructie. Als je een continue
instructie binnen een lus uitvoert, eindigt de huidige iteratie van de lus eerder dan gepland."
"Wat bedoel je met iteratie?"
"Een lus-iteratie is één uitvoering van de lusbody. De continue
instructie onderbreekt de huidige iteratie van de lus, maar in tegenstelling tot de break
instructie beëindigt het de lus zelf niet. De instructie is ook kort:
continue;
"Dus de continue
instructie kan in een lus worden gebruikt als we de uitvoering van bepaalde iteraties van de lus willen 'overslaan'?"
"Precies. Begrijp je het verschil tussen break
en continue
? Als je een zeven moet vinden uit 20 niet-herhalende cijfers, wat voor soort lus en lusonderbreking zou je dan gebruiken?
"Hmm... ik zou alle getallen doornemen, en als ik 7 vind, dan zou ik een uitvoeren break
."
1
"Wat als u getallen van tot moet weergeven, 20
behalve getallen die deelbaar zijn door 7
?"
"Nou, hier heb ik waarschijnlijk nodig continue
, aangezien ik de lus niet wil verlaten. Maar ik begrijp het nog steeds niet helemaal."
"Laat me je laten zien hoe je dit probleem kunt oplossen. Zo zou deze code eruit kunnen zien."
Code | Uitleg |
---|---|
|
Het programma toont getallen van 1 tot 20 . Als het getal deelbaar is door 7 (de rest deling door 7 is 0 ), dan slaan we de weergave van het getal over. |
'Waarom kijk je me zo achterdochtig aan, Ellie? Zit hier een addertje onder het gras?'
"Je laat je niet voor de gek houden, Amigo! Inderdaad, deze code zal niet correct werken . Hij zal de eerste 6 cijfers weergeven, en i
zal dan voor altijd op het nummer blijven hangen 7
. De verklaring slaat immers continue
twee andere verklaringen over: System.out.println(i)
en i++
. Als een resultaat, zodra we de waarde bereiken , stopt 7
de variabele met veranderen en zitten we in een oneindige lus. Ik heb de code met opzet op deze manier geschreven om een veel voorkomende fout te illustreren."i
"Hoe lossen we het op?"
"Er zijn hier twee opties:"
Optie 1: wijzigen i
voor uitvoeren continue
, maar daarnai % 7
Optie 2: altijd verhogen i
aan het begin van de lus. Maar dan i
moet de startwaarde zijn 0
.
Optie 1 | Optie 2 |
---|---|
|
|
"Uitstekend! Ik zal proberen deze fout niet te maken."
"Ik zal je belofte onthouden!"
GO TO FULL VERSION