Zagnieżdżona pętla w Javie (z przykładami)

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 forpętli.

 // outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )

Tutaj używamy forpętli wewnątrz innej forpę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ć forpętlę wewnątrz whilepę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 breakinstrukcji 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 forpę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 continueinstrukcji 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 continueinstrukcja jest wykonywana, gdy wartość j jest nieparzysta. Dlatego program drukuje tylko te dni, które są parzyste.

Widzimy, że continuestwierdzenie wpłynęło tylko na wewnętrzną pętlę. Pętla zewnętrzna działa bez problemu.

Interesujące artykuły...