CodeGym /Java-blogg /Tilfeldig /Java Nested Loops
John Squirrels
Nivå
San Francisco

Java Nested Loops

Publisert i gruppen
Java, som de fleste andre programmeringsspråk, støtter nestede løkker. Dette betyr bare en løkke i en løkke. I denne artikkelen skal vi finne ut om hvordan du arbeider med nestede løkker i Java.

Java nestede løkker

En løkke kalles nestet hvis den er plassert inne i en annen løkke. På den første passeringen kaller den ytre sløyfen den indre sløyfen, som løper til fullføring, hvoretter kontrollen overføres til kroppen til den ytre sløyfen. På den andre passeringen kaller den ytre løkken den indre igjen. Og så videre til den ytre løkken slutter. Det er fire typer løkker i Java:
  • for løkke

  • mens loop

  • gjør ... mens loop

  • for hver løkke

Alle støtter nestede løkker. Nested-loop-konstruksjoner brukes når to betingelser må oppfylles, den ene avhengig av den andre. For eksempel, hvis du trenger å vise en todimensjonal matrise, en semi-pyramide eller en multiplikasjonstabell.

Hvordan Java nestede løkker fungerer

Sannsynligvis den mest brukte loopen i Java er for , i stor grad fordi den er ganske allsidig og koden med den er ganske lett å lese. Her er den generelle syntaksen for nestet for loop:

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

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
Hvordan jobber han? Den ytre løkken starter. Deretter starter nestet for -løkken arbeidet og går gjennom indeksen sin til betingelsen er oppfylt, og sender igjen arbeidet til den ytre loopen, og dette skjer til betingelsen for den ytre loopen er oppfylt. Høres litt vanskelig ut, ikke sant? Vel, det vil være mye lettere å forstå med et spesifikt eksempel, så la oss gå videre til det.

Nestet for sløyfekode eksempel

Her er et klassisk eksempel. La oss skrive ut en halvpyramide med to for løkker. En av dem er nestet.

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();
       }
      
   }
}
Utgangen er:
* ** *** **** ***** ****** ******** ******** ********* ***** *****

Nested while loop-kode eksempel


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

       }
   }
}
Utgangen er akkurat den samme som i forrige eksempel:
* ** *** **** ***** ****** ******** ******** ********* ***** *****
Do ...while- løkken ligner på while- løkken. Hovedforskjellen er at hoveddelen av do...while -løkken kjøres én gang før uttrykkskontrollen.

Nested foreach loops-kodeeksempel

for-hver løkke kan nestes som vanlig for løkke. Her er eksemplet for nestet for hver sløyfe som itererer 2-dimensjonal 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("");
           }
       }
}
Utgangen er:
5 4 3 2 1 7 8 9 10 11

Blandet for og mens loop eksempel

Noen ganger kan vi hekke ulike typer løkker inne i hverandre. For eksempel for inside while eller for inside for-each . Det er imidlertid ikke den beste programmeringspraksisen. Slike konstruksjoner svekker kodens lesbarhet betydelig. Så profesjonelle programmerere prøver å ikke blande det ene med det andre. Vel, det gjør de, men bare hvis det virkelig er nødvendig. Og en liten regel til: hvis du velger mellom mens og for , bruk for der det er mulig. Likevel, her skal vi ha et eksempel på bruk av en for- løkke inne i while . La oss bygge vår semi-pyramide igjen.

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

       }
   }
}
Utgangen er uten overraskelser:
* ** *** **** ***** ****** ******** ******** ********* ***** *****
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION