CodeGym /Java Blogu /Rastgele /Java İç İçe Döngüler
John Squirrels
Seviye
San Francisco

Java İç İçe Döngüler

grupta yayınlandı
Java, diğer birçok programlama dili gibi iç içe döngüleri destekler. Bu sadece bir döngü içinde bir döngü anlamına gelir. Bu yazıda, Java'da iç içe döngülerle nasıl çalışılacağını öğreneceğiz.

Java iç içe döngüler

Bir döngü, başka bir döngünün içine yerleştirilmişse yuvalanmış olarak adlandırılır. İlk geçişte, dış döngü, tamamlanmaya çalışan iç döngüyü çağırır ve ardından kontrol, dış döngünün gövdesine aktarılır. İkinci geçişte, dış döngü iç döngüyü tekrar çağırır. Ve böylece dış döngü bitene kadar. Java'da dört tür döngü vardır:
  • döngü için

  • while döngüsü

  • do...while döngüsü

  • for-each döngüsü

Hepsi iç içe döngüleri destekler. İç içe döngü yapıları, biri diğerine bağlı olarak iki koşulun karşılanması gerektiğinde kullanılır. Örneğin, iki boyutlu bir matris, bir yarı piramit veya bir çarpım tablosu görüntülemeniz gerekiyorsa.

Java iç içe döngüler nasıl çalışır?

Muhtemelen Java'da en çok kullanılan döngü for'dur , çünkü oldukça çok yönlüdür ve içindeki kodun okunması oldukça kolaydır. Yuvalanmış for döngüsünün genel sözdizimi şöyledir :

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

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
O nasıl çalışıyor? Dış döngü başlar. Daha sonra iç içe for döngüsü çalışmaya başlar ve koşul sağlanana kadar indeksinden geçer ve işi tekrar dış döngüye geçirir ve bu, dış döngünün koşulu sağlanana kadar gerçekleşir. Kulağa biraz zor geliyor, değil mi? Belirli bir örnekle anlamak çok daha kolay olacak, o yüzden ona geçelim.

Döngü kodu örneği için iç içe

İşte klasik bir örnek. İki for döngüsü kullanarak bir yarım piramit yazdıralım . Bunlardan biri iç içe.

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();
       }
      
   }
}
Çıktı:
* ** *** **** ***** ****** ******* ********* ********* ***** *****

Yuvalanmış while döngüsü kodu örneği


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

       }
   }
}
Çıktı, önceki örnektekiyle aynıdır:
* ** *** **** ***** ****** ******* ********* ********* ***** *****
do ...while döngüsü, while döngüsüne benzer . Temel fark, do...while döngüsünün gövdesinin ifade kontrolünden önce bir kez çalıştırılmasıdır.

İç içe foreach döngüleri kod örneği

for-each döngüsü, normal for döngüsü gibi iç içe olabilir . İşte 2 boyutlu diziyi yineleyen iç içe for-each döngüsü örneği .

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("");
           }
       }
}
Çıktı:
5 4 3 2 1 7 8 9 10 11

Karışık for ve while döngüsü örneği

Bazen farklı tipteki döngüleri iç içe geçirebiliriz. Örneğin, inside while için veya inside for-each için . Ancak, en iyi programlama uygulaması değildir. Bu tür yapılar, kodun okunabilirliğini önemli ölçüde bozar. Bu yüzden profesyonel programcılar birini diğeriyle karıştırmamaya çalışırlar. Eh, yaparlar, ama sadece gerçekten gerekliyse. Ve bir küçük kural daha: while ve for arasında seçim yapıyorsanız , mümkün olan yerlerde for kullanın . Yine de, burada while içinde bir for döngüsü kullanma örneğimiz olacak . Yarı piramidimizi yeniden inşa edelim.

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

       }
   }
}
Çıktı sürprizsiz:
* ** *** **** ***** ****** ******* ********* ********* ***** *****
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION