logo

Java-lussen

Probeer het eens op GfG Practice Voortgang' title=

Lussen in het programmeren zorgen ervoor dat een reeks instructies meerdere keren kan worden uitgevoerd op basis van een voorwaarde. In Java zijn er drie soorten loops, die hieronder worden uitgelegd:

1. voor lus

De for-lus wordt gebruikt als we het aantal iteraties kennen (we weten hoe vaak we een taak willen herhalen). De for-instructie bevat de initialisatievoorwaarde en het verhogen/verlagen op één regel. 

Voorbeeld: Het onderstaande Java-programma demonstreert een for-lus die getallen van 0 tot 10 op één regel afdrukt.



Java
// Java program to demonstrates the working of for loop import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i <= 10; i++) {  System.out.print(i + ' ');  }  } } 

Uitvoer
0 1 2 3 4 5 6 7 8 9 10 

Syntaxis:

for (initialisatie; voorwaarde; verhogen/verlagen) {

//code die moet worden uitgevoerd

}

De onderstaande afbeelding toont het stroomschema van een for-lus:

Terwijl-lus' title=Stroomdiagram van for -loop
  • Initialisatievoorwaarde : Hier initialiseren we de gebruikte variabele. Het markeert het begin van een for-lus. Een reeds gedeclareerde variabele kan worden gebruikt of een variabele kan alleen lokaal worden gedeclareerd voor een lus.
  • Testconditie: Het wordt gebruikt voor het testen van de uitgangsvoorwaarde voor een lus. Het moet een Booleaanse waarde retourneren. Het is ook een Entry Control Loop, aangezien de voorwaarde wordt gecontroleerd voordat de lusinstructies worden uitgevoerd.
  • Uitvoering van verklaringen : Zodra de voorwaarde als waar is geëvalueerd, worden de instructies in de lusbody uitgevoerd.
  • Verhogen/verlagen : Het wordt gebruikt voor het bijwerken van de variabele voor de volgende iteratie.
  • Beëindiging van de lus :Wanneer de voorwaarde onwaar wordt, eindigt de lus en markeert het einde van zijn levenscyclus.

Opmerking : Er is een andere vorm van de for-lus bekend als Verbeterd voor lus of (voor elke lus).

bias en variantie

Verbeterd voor lus (voor elk)

Deze lus wordt gebruikt om arrays of verzamelingen te doorlopen.

Voorbeeld : Het onderstaande Java-programma demonstreert een Enhanced for-lus (voor elke lus) om een ​​array te doorlopen en namen af ​​te drukken.

Java
// Java program to demonstrate  // the working of for each loop import java.io.*; class Geeks {  public static void main(String[] args)  {  String[] names = { 'Sweta' 'Gudly' 'Amiya' };  for (String name : names) {  System.out.println('Name: ' + name);  }  } } 

Uitvoer
Name: Sweta Name: Gudly Name: Amiya 

Syntaxis:

for (dataType variabele: arrayOrCollection) {

// code die moet worden uitgevoerd

}

2. terwijl lus

Een while-lus wordt gebruikt als we de voorwaarde willen controleren voordat de lus wordt uitgevoerd.

Voorbeeld: Het onderstaande Java-programma demonstreert een while-lus die getallen van 0 tot 10 op één regel afdrukt.

Java
// Java program to demonstrates  // the working of while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  int i = 0;  while (i <= 10) {  System.out.print(i + ' ');  i++;  }  } } 

Uitvoer
0 1 2 3 4 5 6 7 8 9 10 

Syntaxis:

terwijl (voorwaarde) {

// code die moet worden uitgevoerd

}

De onderstaande afbeelding demonstreert het stroomschema van een while-lus:

stapelen in Java
Doe-terwijl-lus' loading='lazy' title=Stroomdiagram van while-loop
  • While-lus begint met het controleren van de Booleaanse voorwaarde. Als het wordt geëvalueerd als waar, worden de body-instructies van de lus uitgevoerd, anders wordt de eerste instructie na de lus uitgevoerd. Om deze reden wordt het ook wel Entry control loop genoemd
  • Zodra de voorwaarde als waar is geëvalueerd, worden de instructies in de lusbody uitgevoerd. Normaal gesproken bevatten de instructies een updatewaarde voor de variabele die wordt verwerkt voor de volgende iteratie.
  • Wanneer de voorwaarde onwaar wordt, wordt de lus beëindigd, wat het einde van zijn levenscyclus markeert.

3. doe-terwijl-lus

De do-while-lus zorgt ervoor dat het codeblok wordt uitgevoerd minstens één keer voordat u de toestand controleert.

Voorbeeld : Het onderstaande Java-programma demonstreert een do-while-lus die getallen van 0 tot 10 op één regel afdrukt.

Java
// Java program to demonstrates  // the working of do-while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  int i = 0;  do {  System.out.print(i + ' ');  i++;  } while (i <= 10);  } } 

Uitvoer
0 1 2 3 4 5 6 7 8 9 10 

Syntaxis:

Doen {

// code die moet worden uitgevoerd

} while (voorwaarde);

De onderstaande afbeelding demonstreert het stroomschema van een do-while-lus:

' loading='lazy' title=Stroomdiagram van do-while-lus
  • do while lus begint met de uitvoering van de instructie. Er wordt voor de eerste keer geen enkele voorwaarde gecontroleerd.
  • Na de uitvoering van de instructies en het bijwerken van de variabelewaarde wordt de voorwaarde gecontroleerd op waar of onwaar. Als het wordt geëvalueerd als waar, begint de volgende iteratie van de lus.
  • Wanneer de voorwaarde onwaar wordt, wordt de lus beëindigd, wat het einde van zijn levenscyclus markeert.
  • Het is belangrijk op te merken dat de do-while-lus zijn instructies minimaal één keer zal uitvoeren voordat een voorwaarde wordt gecontroleerd en daarom een ​​voorbeeld is van een exit-controlelus.

Veelvoorkomende lusfouten en hoe u ze kunt vermijden

Als lussen niet correct worden gebruikt, kunnen ze valkuilen en bugs introduceren die de leesbaarheid en functionaliteit van de codeprestaties beïnvloeden. Hieronder staan ​​enkele veelvoorkomende valkuilen van lussen:

1. Oneindige lussen

Dit is een van de meest voorkomende fouten bij het implementeren van welke vorm van lus dan ook: deze wordt mogelijk nooit afgesloten, dat wil zeggen dat de lus oneindig lang doorloopt. Dit gebeurt wanneer de voorwaarde om een ​​of andere reden mislukt.

Soorten oneindige lussen:

null-controle in Java
  • oneindig voor Loop
  • oneindig terwijl Loop

Voorbeeld: Hier demonstreren beide voorbeelden de oneindige lussen.

Infinite For Loop
// Java program to demonstrate  // the infinite for loop import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 5; i--) {  System.out.println(  'This loop will run forever');  }  } } 
Infinite While Loop
// Java Program to demonstrate  // the infinite while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  while(true)  {  System.out.println(  'Basic example of infinte loop');  }  } } 

Uitgang: Wanneer u beide bovenstaande codes uitvoert, krijgt u een TLE-fout (Time Limit Exceeded).

2. Eén-voor-één-fouten

Off-by-One-fouten worden veroorzaakt wanneer de lus één keer meer of één keer minder wordt uitgevoerd dan gewenst. Het gebeurt in principe wanneer de lusvoorwaarde niet correct is ingesteld.

Voorbeeld : Het onderstaande Java-programma demonstreert een Off-by-One Error waarbij de lus zes keer wordt uitgevoerd en we hadden verwacht dat deze vijf keer zou worden uitgevoerd.

Java
// Java Program to demonstrates Off-by-One Errors import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i <= 5; i++) {  System.out.print(i + ' ');  }  } } 

3. Lusvariabelen binnen de lus wijzigen

Wanneer we de lusvoorwaarde (zoals i) binnen de lus veranderen, kan dit ervoor zorgen dat de lus bepaalde iteraties overslaat of zich op een manier gedraagt ​​die we niet hadden verwacht. Dit kan leiden tot fouten of onverwacht gedrag.

Voorbeeld : Het onderstaande Java-programma demonstreert het wijzigen van de lusvariabele binnen de lus, waardoor de lus bepaalde iteraties overslaat en zich onverwacht gedraagt.

Java
// Java program demonstrates  // modification in i variable import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 5; i++) {  if (i == 2) {    // Modifies the loop variable and skips  // the next iteration  i++;  }  System.out.println(i);  }  } } 

4. Leeg luslichaam

Een lege lusbody treedt op wanneer een lus wordt geschreven om te itereren, maar geen bewerkingen binnen de lus uitvoert. Het uitvoeren van een lus zonder enige nuttige bewerkingen erin kan verwarrend zijn.

Voorbeeld: Het onderstaande Java-programma demonstreert de lege lusbody.

Java
// Java program to demonstrates Empty loop body import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 10; i++) {    // Empty body no operations  }  } } 

Hiervoor wordt geen uitvoer gegenereerd omdat de body van de lus leeg is.

Overzichtstabel

Lustype

Wanneer te gebruiken

Conditiecontrole

Wordt ten minste één keer uitgevoerd?

voor lus

Wanneer u exacte iteraties wilt

Vóór de lusbody. Het heet Ingangsgestuurd.

Nee

Java-punt

terwijl lus

Wanneer u eerst een conditiecontrole nodig heeft.

Vóór de lusbody. Het heet Ingangsgestuurd.

Nee

do-while-lus

Wanneer je minstens één keer moet rennen

After loop body Het heet Exit-gecontroleerd.

Ja

voor elke lus

Wanneer u alle collectiestukken verwerkt

Intern afgehandeld

Nee

Gerelateerde berichten:

  • voor lus
  • terwijl lus
  • do-while-lus
Quiz maken