W tym samouczku nauczymy się zagnieżdżonych pętli w Javie na podstawie przykładów.
Jeśli pętla istnieje wewnątrz treści innej pętli, nazywana jest pętlą zagnieżdżoną. Oto przykład zagnieżdżonej for
pętli.
// outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )
Tutaj używamy for
pętli wewnątrz innej for
pętli.
Możemy użyć zagnieżdżonej pętli, aby iterować przez każdy dzień tygodnia przez 3 tygodnie.
W takim przypadku możemy utworzyć pętlę do wykonania trzech iteracji (3 tygodnie). Wewnątrz pętli możemy utworzyć kolejną pętlę, aby iterować 7 razy (7 dni).
Przykład 1: Java zagnieżdżona dla pętli
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); ) ) ) )
Wynik
Tydzień: 1 Dzień: 1 Dzień: 2 Dzień: 3…. Tydzień: 2 Dzień: 1 Dzień: 2 Dzień: 3….….
W powyższym przykładzie zewnętrzna pętla powtarza się 3 razy i wyświetla 3 tygodnie. A wewnętrzna pętla iteruje 7 razy i drukuje 7 dni.
W podobny sposób możemy również tworzyć zagnieżdżone pętle z while i do… while.
Uwaga : Możliwe jest użycie jednego rodzaju pętli wewnątrz ciała innej pętli. Na przykład możemy umieścić for
pętlę wewnątrz while
pętli.
Przykład 2: Pętla for w Javie wewnątrz pętli while
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; ) ) )
Wyjście :
Tydzień: 1 Dzień: 1 Dzień: 2 Dzień: 3…. Tydzień: 2 Dzień: 1 Dzień: 2 Dzień: 3….….
Tutaj widać, że dane wyjściowe przykładu 1 i przykładu 2 są takie same.
Przykład 3: zagnieżdżone pętle Java do tworzenia wzorca
Możemy użyć zagnieżdżonej pętli w Javie do tworzenia wzorców, takich jak pełna piramida, pół piramida, odwrócona piramida i tak dalej.
Oto program do tworzenia wzoru pół-ostrosłupa za pomocą zagnieżdżonych pętli.
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(""); ) ) )
Wynik
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
Aby dowiedzieć się więcej, odwiedź program Java do drukowania piramid i wzorców.
przerwij i kontynuuj wewnątrz zagnieżdżonych pętli
Kiedy używamy break
instrukcji wewnątrz pętli wewnętrznej, kończy ona pętlę wewnętrzną, ale nie kończy pętli zewnętrznej. Na przykład,
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); ) ) ) )
Wynik
Tydzień: 1 Dzień: 1 Dzień: 2…. Tydzień: 2 Tydzień: 3 Dzień: 1 Dzień: 2….….
W powyższym przykładzie użyliśmy instrukcji break wewnątrz wewnętrznej for
pętli. Tutaj program pomija pętlę, gdy i wynosi 2 .
W związku z tym dni tygodnia 2 nie są drukowane. Jednak zewnętrzna pętla, która drukuje tydzień, pozostaje nienaruszona.
Podobnie, gdy używamy continue
instrukcji wewnątrz pętli wewnętrznej, pomija ona tylko bieżącą iterację pętli wewnętrznej. Zewnętrzna pętla pozostaje nienaruszona. Na przykład,
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); ) ) ) )
Wynik
Tydzień: 1 Dni: 2 Dni: 4 Dni: 6 Tydzień: 2 Dni: 2 Dni: 4 Dni: 6 Tydzień: 3 Dni: 2 Dni: 4 Dni: 6
W powyższym przykładzie użyliśmy instrukcji continue wewnątrz wewnętrznej pętli for. Zwróć uwagę na kod,
if(j % 2 != 0) ( continue; )
Tutaj continue
instrukcja jest wykonywana, gdy wartość j jest nieparzysta. Dlatego program drukuje tylko te dni, które są parzyste.
Widzimy, że continue
stwierdzenie wpłynęło tylko na wewnętrzną pętlę. Pętla zewnętrzna działa bez problemu.