Ebben az oktatóanyagban példák segítségével megismerhetjük a Java beágyazott hurkait.
Ha egy hurok létezik egy másik hurok testében, akkor beágyazott huroknak hívják. Itt van egy példa a beágyazott for
hurokra.
// outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )
Itt egy for
hurokot használunk egy másik for
hurokban.
Használhatjuk a beágyazott hurkot a hét minden napjának 3 héten át történő iterálásához.
Ebben az esetben létrehozhatunk egy hurkot a háromszoros (3 hét) ismétléshez. És a hurok belsejében létrehozhatunk egy újabb ciklust, amely 7-szer (7 nap) ismétlődik.
1. példa: Java beágyazva a hurokba
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop prints weeks for (int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop prints days for (int j = 1; j <= days; ++j) ( System.out.println(" Day: " + j); ) ) ) )
Kimenet
Hét: 1 Nap: 1 Nap: 2 Nap: 3…. Hét: 2 Nap: 1 Nap: 2 Nap: 3….….
A fenti példában a külső hurok háromszor ismétlődik és 3 hetet nyomtat. És a belső hurok 7-szer ismétlődik, és kinyomtatja a 7 napot.
Létrehozhatunk beágyazott ciklusokat a while és do… műveletekkel is, hasonló módon.
Megjegyzés : Lehetséges egy típusú hurok használata egy másik hurok testében. Például tehetünk egy for
hurkot a hurok belsejébe while
.
2. példa: Java for loop a while ciklus belsejében
class Main ( 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; ) ) )
Kimenet :
Hét: 1 Nap: 1 Nap: 2 Nap: 3…. Hét: 2 Nap: 1 Nap: 2 Nap: 3….….
Itt láthatjuk, hogy a kimenő mind az 1. példa és a 2. példa ugyanaz.
3. példa: Java beágyazott hurkokat hoz létre egy minta létrehozásához
Használhatjuk a Java beágyazott hurokját olyan minták létrehozására, mint a teljes piramis, a fél piramis, a fordított piramis stb.
Itt van egy program egy fél piramisminta létrehozására beágyazott hurkok felhasználásával.
class Main ( public static void main(String() args) ( int rows = 5; // outer loop for (int i = 1; i <= rows; ++i) ( // inner loop to print the numbers for (int j = 1; j <= i; ++j) ( System.out.print(j + " "); ) System.out.println(""); ) ) )
Kimenet
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
További információkért keresse fel a Java programot piramis és minták kinyomtatásához.
törje meg és folytassa az Inside Nested Loops alkalmazást
Amikor break
a belső hurok belsejében használunk egy állítást, akkor a belső hurok befejeződik, a külső hurok azonban nem. Például,
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // break inside the inner loop if(i == 2) ( break; ) System.out.println(" Days: " + j); ) ) ) )
Kimenet
Hét: 1 Nap: 1 Nap: 2…. Hét: 2 hét: 3 nap: 1 nap: 2….….
A fenti példában a break mondatot használtuk a belső for
hurok belsejében . Itt a program kihagyja a ciklust, amikor i értéke 2 .
Ezért a 2. hét napjai nem kerülnek kinyomtatásra. A hétet kinyomtató külső hurok azonban nem változik.
Hasonlóképpen, amikor egy continue
állítást használunk a belső hurokban, akkor csak a belső hurok aktuális iterációját hagyja ki. A külső hurok érintetlen. Például,
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // continue inside the inner loop if(j % 2 != 0) ( continue; ) System.out.println(" Days: " + j); ) ) ) )
Kimenet
Hét: 1 nap: 2 nap: 4 nap: 6 hét: 2 nap: 2 nap: 4 nap: 6 hét: 3 nap: 2 nap: 4 nap: 6
A fenti példában a belső for cikluson belüli folytatás utasítást használtuk. Figyelje meg a kódot,
if(j % 2 != 0) ( continue; )
Itt az continue
utasítás akkor kerül végrehajtásra, ha j értéke páratlan. Ezért a program csak azokat a napokat nyomtatja ki, amelyek egyenletesek.
Láthatjuk, hogy az continue
állítás csak a belső hurkot érintette. A külső hurok probléma nélkül működik.