CodeGym /Java blogg /Slumpmässig /Java kapslade loopar
John Squirrels
Nivå
San Francisco

Java kapslade loopar

Publicerad i gruppen
Java, som de flesta andra programmeringsspråk, stöder kapslade loopar. Detta betyder bara en slinga i en slinga. I den här artikeln ska vi ta reda på hur man arbetar med kapslade loopar i Java.

Java kapslade loopar

En slinga kallas kapslad om den placeras inuti en annan slinga. Vid första passet anropar den yttre slingan den inre slingan, som löper till slut, varefter kontrollen överförs till den yttre slingans kropp. Vid det andra passet anropar den yttre slingan den inre igen. Och så vidare tills den yttre öglan tar slut. Det finns fyra typer av loopar i Java:
  • för slinga

  • medan loop

  • gör ... medan loop

  • för varje slinga

Alla stöder kapslade loopar. Kapslade loop-konstruktioner används när två villkor måste uppfyllas, det ena beroende på det andra. Till exempel, om du behöver visa en tvådimensionell matris, en semipyramid eller en multiplikationstabell.

Hur Java kapslade loopar fungerar

Förmodligen är den mest använda slingan i Java för , till stor del för att den är ganska mångsidig och koden med den är ganska lätt att läsa. Här är den allmänna syntaxen för kapslade för loop:

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
Hur fungerar han? Den yttre slingan startar. Sedan startar den kapslade för -slingan arbetet och går igenom dess index tills villkoret är uppfyllt, och skickar igen arbetet till den yttre slingan, och detta händer tills villkoret för den yttre slingan är uppfyllt. Låter lite knepigt, eller hur? Tja, det blir mycket lättare att förstå med ett specifikt exempel, så låt oss gå vidare till det.

Kapslad för loopkod exempel

Här är ett klassiskt exempel. Låt oss skriva ut en halv pyramid med två för loopar. En av dem är kapslad.

public class NestedLoopsDemo1 {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j<=i;  j++)
               System.out.print("*");
           System.out.println();
       }
      
   }
}
Utgången är:
* ** *** **** ***** ****** ******** ******** ********* ***** *****

Exempel på kapslad while loop-kod


public class NestedLoopsDemo2 {

   public static void main(String[] args) {

       int i = 0;
       while (i < 10) {
           int j = 0;
           while (j <= i) {
               System.out.print("*");
               j++;
           }
           System.out.println();
           i++;

       }
   }
}
Utgången är precis densamma som i föregående exempel:
* ** *** **** ***** ****** ******** ******** ********* ***** *****
Do ...while- slingan liknar while- loopen. Den största skillnaden är att kroppen av do...while loop exekveras en gång innan uttryckskontrollen.

Nested foreach loops-kodexempel

for-each loop kan kapslas som vanligt för loop. Här är exemplet för kapslad för varje slinga som itererar 2-dimensionell array.

public class NestedLoops2 {

       public static void main(String[] args)
       {
           int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };

           for (int[] myArray : mainArray)
           {
               for (int i : myArray)
               {
                   System.out.print(i+" ");
               }
               System.out.println("");
           }
       }
}
Utgången är:
5 4 3 2 1 7 8 9 10 11

Blandat för och medan loop exempel

Ibland kan vi häcka olika typer av slingor inuti varandra. Till exempel för insidan medan eller för insidan för varje . Det är dock inte den bästa programmeringsmetoden. Sådana konstruktioner försämrar avsevärt kodens läsbarhet. Så professionella programmerare försöker att inte blanda det ena med det andra. Jo, det gör de, men bara om det verkligen behövs. Och en liten regel till: om du väljer mellan medan och för , använd för där det är möjligt. Icke desto mindre kommer vi här att ha ett exempel på att använda en for- loop inuti while . Låt oss bygga vår halvpyramid igen.

public class NestedLoopsDemo2 {

   public static void main(String[] args) {
       int i = 0;
       while (i < 10) {
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
           }
           System.out.println();
           i++;

       }
   }
}
Resultatet är utan överraskningar:
* ** *** **** ***** ****** ******** ******** ********* ***** *****
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION