CodeGym /Blog Java /Random-PL /Pętle zagnieżdżone w Javie
Autor
John Selawsky
Senior Java Developer and Tutor at LearningTree

Pętle zagnieżdżone w Javie

Opublikowano w grupie Random-PL
Java, podobnie jak większość innych języków programowania, obsługuje zagnieżdżone pętle. Oznacza to tylko pętlę w pętli. W tym artykule dowiemy się, jak pracować z zagnieżdżonymi pętlami w Javie.

Pętle zagnieżdżone w Javie

Pętla jest nazywana zagnieżdżoną, jeśli jest umieszczona wewnątrz innej pętli. W pierwszym przebiegu pętla zewnętrzna wywołuje pętlę wewnętrzną, która przebiega do końca, po czym sterowanie jest przekazywane do ciała pętli zewnętrznej. W drugim przebiegu zewnętrzna pętla ponownie wywołuje wewnętrzną. I tak dalej, aż zewnętrzna pętla się skończy. W Javie istnieją cztery typy pętli:
  • dla pętli

  • pętla while

  • wykonaj pętlę while

  • dla każdej pętli

Wszystkie obsługują zagnieżdżone pętle. Konstrukcje z zagnieżdżoną pętlą są używane, gdy muszą być spełnione dwa warunki, z których jeden zależy od drugiego. Na przykład, jeśli chcesz wyświetlić dwuwymiarową macierz, półpiramidę lub tabliczkę mnożenia.

Jak działają zagnieżdżone pętle Java

Prawdopodobnie najczęściej używaną pętlą w Javie jest pętla for , w dużej mierze dlatego, że jest dość wszechstronna, a kod z nią związany jest dość łatwy do odczytania. Oto ogólna składnia zagnieżdżonej pętli for :

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

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
Jak on pracuje? Rozpoczyna się zewnętrzna pętla. Następnie zagnieżdżona pętla for rozpoczyna pracę i przechodzi przez swój indeks, aż warunek zostanie spełniony, i ponownie przekazuje pracę do pętli zewnętrznej, a dzieje się tak, dopóki warunek pętli zewnętrznej nie zostanie spełniony. Brzmi trochę zawile, prawda? Cóż, o wiele łatwiej będzie to zrozumieć na konkretnym przykładzie, więc przejdźmy do tego.

Zagnieżdżony przykładowy kod pętli

Oto jeden z klasycznych przykładów. Wydrukujmy pół piramidy za pomocą dwóch pętli for . Jeden z nich jest zagnieżdżony.

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();
       }
      
   }
}
Dane wyjściowe to:
* ** *** **** ***** ****** ******* ******** ********* **********

Przykład kodu zagnieżdżonej pętli while


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

       }
   }
}
Dane wyjściowe są takie same jak w poprzednim przykładzie:
* ** *** **** ***** ****** ******* ******** ********* **********
Pętla do...while jest podobna do pętli while . Główna różnica polega na tym, że ciało pętli do...while jest wykonywane raz przed sprawdzeniem wyrażenia.

Przykład kodu zagnieżdżonych pętli foreach

Pętla for-each może być zagnieżdżana jak zwykła pętla for . Oto przykład zagnieżdżonej pętli for-each , która iteruje dwuwymiarową tablicę.

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("");
           }
       }
}
Dane wyjściowe to:
5 4 3 2 1 7 8 9 10 11

Mieszany przykład pętli for i while

Czasami możemy zagnieżdżać w sobie różne typy pętli. Na przykład for inside while lub for inside for-each . Jednak nie jest to najlepsza praktyka programistyczna. Takie konstrukcje znacznie pogarszają czytelność kodu. Dlatego profesjonalni programiści starają się nie mieszać jednego z drugim. Cóż, robią, ale tylko wtedy, gdy jest to naprawdę potrzebne. I jeszcze jedna mała zasada: jeśli wybierasz między while i for , używaj for tam, gdzie to możliwe. Niemniej jednak tutaj będziemy mieli przykład użycia pętli for wewnątrz while . Zbudujmy ponownie naszą półpiramidę.

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

       }
   }
}
Wyjście bez niespodzianek:
* ** *** **** ***** ****** ******* ******** ********* **********
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION