Slingor i Java

Slingor i Java

Looping i programmeringsspråk är en funktion som underlättar exekveringen av en uppsättning instruktioner/funktioner upprepade gånger medan vissa villkor utvärderas till sanna. Java tillhandahåller tre sätt att exekvera looparna. Även om alla sätt ger liknande grundläggande funktionalitet, skiljer de sig åt i sin syntax och tid för tillståndskontroll.

java tillhandahåller tre typer av villkorliga uttalanden, denna andra typ är loop-sats.

  • medan loop: En while loop är en kontrollflödessats som gör att kod kan exekveras upprepade gånger baserat på ett givet booleskt tillstånd. While-slingan kan ses som en repeterande if-sats.

Syntax :

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

Java




/*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++;> > }> > }> }>

Produktion

0 1 2 3 4 5 6 7 8 9 10 
  • Flödesschema: för-loop-i-java
    • While loop börjar med kontrollen av booleskt tillstånd. Om det utvärderades till sant, exekveras loopkroppssatserna annars exekveras den första satsen efter slingan. Av denna anledning kallas det också Ingångskontrollslinga
    • När villkoret har utvärderats till sant, exekveras satserna i loopkroppen. Normalt innehåller satserna ett uppdateringsvärde för variabeln som bearbetas för nästa iteration.
    • När villkoret blir falskt avslutas slingan vilket markerar slutet på dess livscykel.
  • för loop: for loop ger ett kortfattat sätt att skriva loopstrukturen. Till skillnad från en while-loop, förbrukar en for-sats initieringen, villkoret och ökningen/minskningen på en rad och ger därmed en kortare struktur för looping som är lätt att felsöka.

Syntax:

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

Produktion

0 1 2 3 4 5 6 7 8 9 10 
  • Flödesschema:
    göra medan
      Initieringsvillkor: Här initierar vi variabeln som används. Det markerar början på en for-loop. En redan deklarerad variabel kan användas eller en variabel kan deklareras, endast lokal till loop. Testvillkor: Det används för att testa utgångsvillkoret för en slinga. Den måste returnera ett booleskt värde. Det är också en Entry Control Loop eftersom villkoret kontrolleras före exekvering av loop-satserna. Utförande av uttalande: När villkoret har utvärderats till sant, exekveras satserna i loopkroppen. Öka/minska: Den används för att uppdatera variabeln för nästa iteration. Slingavslutning: När villkoret blir falskt, avslutas slingan och markerar slutet på dess livscykel.
  • göra medan: do while loop liknar while loop med den enda skillnaden att den söker efter tillstånd efter exekvering av satserna, och är därför ett exempel på Avsluta kontrollslingan.

Syntax:

do { statements.. } while (condition); 

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

Produktion

0 1 2 3 4 5 6 7 8 9 10 
  • Flödesschema:
    • do while loop börjar med exekvering av satsen/satserna. Det görs ingen kontroll av något tillstånd för första gången.
    • Efter exekvering av satserna och uppdatering av variabelvärdet kontrolleras villkoret för sant eller falskt värde. Om det utvärderas till sant, startar nästa iteration av slingan.
    • När villkoret blir falskt avslutas slingan vilket markerar slutet på dess livscykel.
    • Det är viktigt att notera att do-while loop kommer att exekvera sina programsatser minst en gång innan något villkor kontrolleras, och är därför ett exempel på exit control loop.

Fallgropar av loopar

    Oändlig loop: Ett av de vanligaste misstagen när man implementerar någon form av looping är att den kanske aldrig avslutas, det vill säga loopen löper i oändlig tid. Detta händer när tillståndet misslyckas av någon anledning. Exempel: Oändligt för loop :

Java




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

oändlig while loop:

Java




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

Java




//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');> > }> > }> }>

En annan fallgrop är att du kanske lägger till något i ditt samlingsobjekt genom loop och du kan få slut på minne. Om du försöker köra programmet nedan, kommer ett undantag för slut på minne att kastas efter en tid.

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

Produktion:

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) 

Kapslad loop:

Kapslad loop betyder en loop-sats inuti en annan loop-sats.

Det finns olika kombinationer av loop med för slinga, medan slinga, göra medan slinga.

Ex.1 Kapslad för loop

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();> > }> > }> }>

Produktion

0 0 1 1 2 2 

Ex.2 Kapslad medan loop

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> ;> > }> > }> }>

Produktion

123 123 123 

Ex.3 Kapslad do while loop

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>= rad);> > column => 1> ;> > do> {> > System.out.print(column +> ' '> );> > column++;> > }> while> (column <=> 5> );> > System.out.println(> ' '> );> > row++;> > }> while> (row <=> 5> );> > }> }>

Produktion

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 

Ex.4 Kapslad medan och för loop

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;> > }> > }> }>

Produktion

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