logo

Lussen in Java

Looping in programmeertalen is een functie die de uitvoering van een reeks instructies/functies herhaaldelijk vergemakkelijkt, terwijl een bepaalde voorwaarde als waar wordt geëvalueerd. Java biedt drie manieren om de lussen uit te voeren. Hoewel alle manieren dezelfde basisfunctionaliteit bieden, verschillen ze in syntaxis en tijd voor conditiecontrole.

java biedt drie soorten voorwaardelijke instructies. Het tweede type is een lusinstructie.



  • herhalingslus: Een while-lus is een controlestroominstructie waarmee code herhaaldelijk kan worden uitgevoerd op basis van een bepaalde Booleaanse voorwaarde. De while-lus kan worden gezien als een herhalende if-instructie.

Syntaxis:

while (boolean condition) { loop statements... }>

Java








Java-object voor json
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >while> (i<=>10>)> >{> >System.out.println(i);> >i++;> >}> >}> }>

>

>

Uitvoer

0 1 2 3 4 5 6 7 8 9 10>
  • Stroomdiagram: for-loop-in-java
    • 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 genoemd Toegangscontrolelus
    • Zodra de voorwaarde is geëvalueerd als waar, 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.
  • for loop: for loop biedt een beknopte manier om de lusstructuur te schrijven. In tegenstelling tot een while-lus, gebruikt een for-instructie de initialisatie, voorwaarde en verhoging/verlaging op één regel, waardoor een kortere, eenvoudig te debuggen structuur van de lus ontstaat.

Syntaxis:

for (initialization condition; testing condition;increment/decrement) { statement(s) }>

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for> (>int> i=>0>;i<=>10>;i++)> >{> >System.out.println(i);> >}> >}> }>

>

>

Uitvoer

0 1 2 3 4 5 6 7 8 9 10>
  • Stroomdiagram:
    doen terwijl
      Initialisatievoorwaarde: hier initialiseren we de gebruikte variabele. Het markeert het begin van een for-lus. Een reeds gedeclareerde variabele kan worden gebruikt of er kan een variabele worden gedeclareerd, alleen lokaal voor de lus. Testvoorwaarde: Het wordt gebruikt voor het testen van de uitgangsvoorwaarde voor een lus. Het moet een Booleaanse waarde retourneren. Het is ook een Toegangscontrolelus omdat de voorwaarde wordt gecontroleerd voordat de lusinstructies worden uitgevoerd. Uitvoering van instructies: zodra de voorwaarde is geëvalueerd als waar, worden de instructies in de lusbody uitgevoerd. Verhogen/verlagen: Het wordt gebruikt voor het bijwerken van de variabele voor de volgende iteratie. Lusbeëindiging: Wanneer de voorwaarde onwaar wordt, eindigt de lus en markeert het einde van zijn levenscyclus.
  • doen terwijl: do while-lus is vergelijkbaar met while-lus, met als enige verschil dat deze controleert op conditie na het uitvoeren van de instructies, en daarom een ​​voorbeeld is van Verlaat de controlelus.

Syntaxis:

do { statements.. } while (condition);>

Java




abstracte klasse Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >do> >{> >System.out.println(i);> >i++;> >}>while>(i<=>10>);> >}> }>

>

>

Uitvoer

0 1 2 3 4 5 6 7 8 9 10>
  • Stroomdiagram:
    • do while-lus begint met de uitvoering van de instructie(s). 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 minstens één keer zal uitvoeren voordat een voorwaarde wordt gecontroleerd, en daarom een ​​voorbeeld is van een exit-controlelus.

Valkuilen van lussen

    Oneindige lus: Een van de meest voorkomende fouten bij het implementeren van welke vorm van lus dan ook is dat deze nooit zal eindigen, dat wil zeggen dat de lus oneindig lang doorloopt. Dit gebeurt wanneer de voorwaarde om een ​​of andere reden mislukt. Voorbeelden: Oneindig voor lus:

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >for> (;;) {> >}> >}> }>

>

>

oneindige while-lus:

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >while> (>true>)> >{> >// statement> >}> > >}> }>

>

>

Java




hoeveel toetsen hebben toetsenborden
//Java program to illustrate various pitfalls.> public> class> LooppitfallsDemo> {> >public> static> void> main(String[] args)> >{> >// infinite loop because condition is not apt> >// condition should have been i>0.> >for> (>int> i =>5>; i !=>0>; i -=>2>)> >{> >System.out.println(i);> >}> >int> x =>5>;> >// infinite loop because update statement> >// is not provided.> >while> (x ==>5>)> >{> >System.out.println('In the loop');> >}> >}> }>

>

>

Een andere valkuil is dat je via een lus iets aan je verzamelobject toevoegt, waardoor je geheugen tekort kan komen. Als u het onderstaande programma probeert uit te voeren, wordt na enige tijd een uitzondering voor onvoldoende geheugen gegenereerd.

Java




//Java program for out of memory exception.> import> java.util.ArrayList;> public> class> Integer1> {> >public> static> void> main(String[] args)> >{> >ArrayList ar =>new> ArrayList();> >for> (>int> i =>0>; i { ar.add(i); } } }>

>

>

Uitgang:

Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.grow(Unknown Source) at java.util.ArrayList.ensureCapacityInternal(Unknown Source) at java.util.ArrayList.add(Unknown Source) at article.Integer1.main(Integer1.java:9)>

Geneste lus:

Geneste lus betekent een lusinstructie binnen een andere lusinstructie.

Er zijn verschillende combinaties van lusgebruik voor lus, terwijl lus, doen terwijl lus.

Voorbeeld 1 Genest voor lus

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for>(>int> i =>0>; i <>3>; i++){> >for>(>int> j =>0>; j <>2>; j++){> >System.out.println(i);> >}> >System.out.println();> >}> >}> }>

>

>

Uitvoer

java localdatetime
0 0 1 1 2 2>

Voorbeeld 2 Geneste while-lus

Java




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> i =>1>, j =>1>;> >while> (i <=>3>) {> >while> (j <=>3>) {> >System.out.print(j);> >j++;> >}> >i++;> >System.out.println(>''>);> >j =>1>;> >}> >}> }>

>

>

Uitvoer

hoe je een string naar int cast in Java
123 123 123>

Voorbeeld 3 Geneste do while-lus

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> row =>1>, column =>1>;> >int> x;> >do> {> >x =>4>;> >do> {> >System.out.print(>''>);> >x--;> >}>while> (x>= rij);> >column =>1>;> >do> {> >System.out.print(column +>' '>);> >column++;> >}>while> (column <=>5>);> >System.out.println(>' '>);> >row++;> >}>while> (row <=>5>);> >}> }>

>

>

Uitvoer

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5>

Voorbeeld 4 Geneste while- en for-lus

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> weeks =>3>;> >int> days =>7>;> >int> i =>1>;> >// outer loop> >while> (i <= weeks) {> >System.out.println(>'Week: '> + i);> >// inner loop> >for> (>int> j =>1>; j <= days; ++j) {> >System.out.println(>' Days: '> + j);> >}> >++i;> >}> >}> }>

>

>

Uitvoer

Week: 1 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 2 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 3 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7>