BİLGİ SAYAMIYORUM beta

Java da içiçe döngülerden (nested for loop) işlemleri bitirmeden, döngüleri yarıda kesip dışarı nasıl çıkılır?

0

Diyelim ki iç içe döngüler kullanıyorsunuz mesela for döngüleri, döngüden aşağıdaki şekilde çıktığınızda sadece iç döngüden çıkar ve dıştaki koşuluna devam ediyorsa, işlemler devam eder:

     for (int a=0; a < 10; a++) {
          for (int b=0; b < 10; b++) {
               break;
          }
     }

Java da bu işlem için label (etiket) kullanabiliyoruz, bu yaptığınız belirli, tamamen seçimi isteğe bağlı işlemlerin başına yerleştirdiğiniz bir tanımlama özelliği:

     public class Test {
          public static void main(String[] args) {
               neolurgeridon:
               for (int a=0; a < 4; a++) {
                    for (int b=0; b < 4; b++) {
                         if (a * b > 5) {
                              System.out.println("ben gider,");
                              break neolurgeridon:
                         }
                         System.out.println(a + " " + b);
                    }
               }
               System.out.println("bitti!");
          }
     }

Bu işlem ile eğer a ile b nin çarpımı, -ki kendileri 0dan 4e kadar sayılan döngülerin oyuncuları- 5 ten büyükse döngü elindeki tüm işi bırakıp en dıştaki "neolurgeridon" etiketinden sonra yazılmış fonksiyonların sonuna gider. Tabii nerde bitiyor sonraki fonksiyon, parantezler karışıo, başka etiket de kullanıcam filan derseniz, şu şekilde süslü paranteze alarak yazın:

     neolurgeridon: {
          for (blabla) {
               for (blabla) {
                    blabla();
                    break neolurgeridon:
               }
          }
     }

Bu Java için ne kadar mantıklı bir yöntem olsa da belki fonksiyonu statik olarak tanımlayıp dışarıdan çağırıp, gerektiğinde return diyerek de o döngülerin tamamından direk olarak çıkabilirsiniz, aynı şey, sadece bazen daha pratik ve okunabilir olabilir:

     public class Test {
          public static void main(String[] args) {
               kontrol();
               System.out.println("bitti!");
          }

          public static void kontrol() {
               for (int a = 0; i < 4; a++) {
                    for (int b = 0; b < 4; b++) {
                         if (a * b > 5) {
                              System.out.println("ben gider,");
                              return;
                         }
                         System.out.println(a + " " + b);
                    }
               }
          }
     }

Ama bu parametrik olduğu için ve tüm döngüler her parametreyi kullanmadığından topluca yollamak saçma gelebilir, ben Javada metodları ayrı ayrı çağırmayı ve etiket (label) kullanmayı tavsiye ederim.

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER