Lussen (onderbreken en terugkeren, doorgaan, labels) - 1

"Hallo Amigo!"

"Vandaag zal ik je vertellen over enkele dingen die handig zijn bij het werken met loops."

"De eerste is het trefwoord break . Als je deze opdracht in de body van een lus gebruikt, wordt de lus onmiddellijk beëindigd wanneer de opdracht wordt uitgevoerd. Hier is een voorbeeld:"

Voorbeeld Uitgang:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

"Kan pauze alleen in een lus worden gebruikt?"

"Ja. De break-instructie kan alleen in een lus worden gebruikt. Als een break-instructie wordt uitgevoerd, wordt de lus onmiddellijk beëindigd."

"OK ik snap het."

"Geweldig. Het tweede dat ik wil delen, is het sleutelwoord continue. Het kan ook alleen in een lus worden gebruikt. Wanneer dit commando wordt uitgevoerd, begint onmiddellijk een nieuwe iteratie van de lus. Met andere woorden, elke resterende code in de body van de lus wordt gewoon overgeslagen."

"Hier is een voorbeeld:"

Voorbeeld Uitgang:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

"Dus zodra het programma een continue-opdracht in een lus bereikt, stopt het met het uitvoeren van de code in de lus?"

"Nee. Kijk, we hebben een lus als we dezelfde code meerdere keren uitvoeren. In het bovenstaande voorbeeld hebben we een lus van 0 tot 9, dwz dat de body van de lus 10 keer wordt uitgevoerd. Juist?"

"Ja."

"Eén doorgang door de body van de lus wordt een iteratie genoemd. Onze lus bestaat uit 10 iteraties - de body van de lus wordt tien keer uitgevoerd."

"Ja, dat is duidelijk."

"Het continue- commando beëindigt de huidige iteratie voortijdig, dwz alle resterende code in de lus wordt overgeslagen en een nieuwe iteratie begint."

"Hier is nog een voorbeeld:"

Voorbeeld
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}

"In dit voorbeeld geven we een tekenreeksweergave weer van alle objecten in de lijst. Maar we slaan alle objecten over die null zijn."

"Oké, begrepen. Ik zie hoe handig dit is."

"Ja. Ik wil je ook vertellen over labels. Ze worden zelden gebruikt in Java, omdat ze vaak de schoonheid van de logica van een programma schenden. Maar je kunt ze op een gegeven moment in de code tegenkomen. Dus ik vertel je liever over dan hoor je erover op de speelplaats."

"Er was eens een tijd dat het toegestaan ​​was om van elke regel naar elke regel in code te springen. We deden dit met behulp van labels en de goto-instructie. Zo ziet het eruit:"

Vreselijke code met labels
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"In dit voorbeeld springt het programma , nadat het goto label- commando is uitgevoerd, naar de regel gemarkeerd met label .

"Later werd iedereen wakker en besloot om de goto- instructie niet te gebruiken. Java ondersteunt goto niet, maar goto is een gereserveerd woord. Geen probleem..."

"Dus geen goto en geen labels in Java?"

"Er is geen goto-verklaring, maar er zijn labels!"

"Hoe kan dat zijn?"

"In Java kunnen labels worden gebruikt met de opdrachten continue en break. Ze worden gebruikt als je veel geneste lussen hebt."

"Stel bijvoorbeeld dat je 5 geneste lussen hebt en als aan een bepaalde voorwaarde is voldaan, wil je er uit drie halen, maar niet allemaal. Labels zijn een elegante manier om dit te doen:"

Voorbeeld
label1: for (int i = 0; i < 10; i++)
 label2: for (int j = 0; j < 10; j++)
  label3: for (int k =0; k < 10; k++)
   if (i == j && j == k)
    break label2;

"In dit voorbeeld, wanneer de break-instructie wordt uitgevoerd, verlaten we niet de lus met variabele k, maar de lus met het label label2 - dwz we verlaten de twee lussen onmiddellijk met k en j."

"Hoe vaak wordt dat gebruikt?"

"Om eerlijk te zijn, niet vaak, maar je weet maar nooit. Misschien zie je het ooit. Dit zijn syntaxisfundamenten - je moet dit allemaal weten!"

"Oké. Dank je, Bilaabo."