CodeGym /Java Course /Module 1 /Een lus onderbreken

Een lus onderbreken

Module 1
Niveau 6 , Les 1
Beschikbaar

1. breakverklaring

Laten we eens kijken naar een voorbeeld uit de vorige les:

Code Uitleg
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Het programma leest een regel van het toetsenbord totdat u invoert "exit".

Het programma leest regels van de console totdat het woord exitis ingevoerd. Als u dit woord invoert, isExit wordt de variabele , wordt truede lusvoorwaarde en eindigt de lus."!isExitfalse

Java heeft een speciale breakinstructie waarmee u dergelijke logica kunt vereenvoudigen. Als een breakinstructie binnen een lus wordt uitgevoerd, eindigt de lus onmiddellijk. Het programma begint met het uitvoeren van de instructie die volgt op de lus. De verklaring is zeer summier:

break;

Zo kun je de breakinstructie gebruiken om het zojuist besproken voorbeeld te herschrijven:

Code Uitleg
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Het programma leest een regel van het toetsenbord totdat u invoert "exit".


2. verklaring voortzetten

Maar breakis niet de enige Java-instructie waarmee u het gedrag van een lus kunt regelen. Java heeft ook de continueverklaring. Als u een continueinstructie binnen een lus uitvoert, eindigt de huidige iteratie van de lus eerder dan gepland.

Het eenmaal uitvoeren van de lusbody wordt een iteratie van de lus genoemd. De continueinstructie onderbreekt de huidige iteratie van de lus, maar in tegenstelling tot de breakinstructie beëindigt deze de lus zelf niet. De verklaring is ook kort:

continue;

De continueinstructie is superhandig in een lus als we de uitvoering van de lus in bepaalde situaties willen 'overslaan'.

Taak: We willen een programma schrijven dat getallen afdrukt van 1tot 20maar getallen overslaat die deelbaar zijn door 7. Zo zou deze code eruit kunnen zien.

Code Uitleg
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Het programma toont getallen van 1tot 20. Als het getal deelbaar is door 7(de rest van delen door 7is 0), dan slaan we de weergave van het getal over.

Eigenlijk zal deze code niet werken , want ihij blijft voor altijd vastzitten op het nummer 7. De stelling slaat immers continuetwee andere stellingen over: System.out.println(i)en i++. Als gevolg hiervan, zodra we de waarde bereiken , stopt 7de variabele met veranderen en zitten we in een oneindige lus.i

We hebben de code met opzet op deze manier geschreven om deze veel voorkomende fout te illustreren. Hoe lossen we het op?

Er zijn hier twee opties:

Optie 1: wijzigen ivoor uitvoeren continue, maar daarnai % 7

Optie 2: altijd verhogen iaan het begin van de lus. Maar dan imoet de startwaarde zijn 0.

Optie 1 Optie 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);
}

Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION