Yükleniyor...

Java'da for-each

slots adlı bir dizide üç tam sayı tutun: 2, sonra 4, sonra 6. for (int n : slots) yazın ve süslü parantezlerin içinde n'yi yazdırın. Ekranda üç satır görünmeli: 2, sonra 4, sonra 6. Bu sayfada bir indeks sayacı yazmazsınız. Her geçiş, dizideki bir sonraki değeri n adına verir. Bu sayfanın öğrettiği şey işte bu yürüyüştür.

Dizideki her değer için bir ad

Pack.java adında küçük bir program dosyası oluşturun. İlk satırdaki public class dosya adıyla aynı olmalıdır: public class Pack. Bu dosyada eski bir Skip veya Pulse sınıf adını bırakmayın; derleyici sınıf adıyla dosya adının uyuşmasını bekler.
main içinde önce diziyi tutun:
int[] slots = {2, 4, 6};
Bu satır hiçbir şey yazdırmaz. Yalnızca üç tam sayıyı slots adı altında tutar. Sonra for-each döngüsü:
for (int n : slots) {
System.out.println(n);
}
for sözcüğü hâlâ küçük harfle yazılır. Yuvarlak parantezlerin içinde ortada iki nokta üst üste olan üç parça durur: tür int, bir öğe için ad n, sonra iki nokta üst üste, sonra dizi adı slots. Bu iki nokta üst üste bir case etiketi değildir ve yol ayırıcısı da değildir. «slots'taki her değer n'ye gider» anlamına gelir. Süslü parantezler gövdeyi tutar. System.out.println(n); n'nin etrafında tırnak olmadan geçerli değeri yazar. Derlemeden önce dosyayı kaydedin.

2 sonra 4 sonra 6 yazdıran program

Bu, önce derlediğiniz sürümdür.

int dizisini gez

java
public class Pack {
    public static void main(String[] args) {
        int[] slots = {2, 4, 6};
        for (int n : slots) {
            System.out.println(n);
        }
    }
}

Pack.java'nın bulunduğu klasörden javac Pack.java çalıştırın. Yuvarlak parantezler, süslü parantezler ve iki nokta üst üsteler uyuşunca javac kendi satırını yazmaz. Sonra java Pack çalıştırın — java Pack.java değil. İkinci komuttan .java sonunu çıkarın. Aynı iki komut hem Windows'ta hem macOS'ta çalışır; bu sayfa hiçbir sistem için farklı bir kabuk yazımı istemez. Program üç satır yazdırmalı ve durmalı: 2, sonra 4, sonra 6. Sizin yazmanızı beklemez. Terminal klavye girişi bekliyorsa, dosyada eski bir alıştırmadan kalan nextLine çağrısı hâlâ vardır. O çağrıyı silin ve yukarıdaki dizi ile for-each'i tutun. Yanlış bir ekran satırı yeni bir JDK kurulumu gerektiği anlamına gelmez.

Bir tam çalıştırmayı sırayla okuyun. slots 2, sonra 4, sonra 6 tutar. İlk geçiş n'yi 2 yapar ve println 2 yazar. İkinci geçiş n'yi 4 yapar ve 4 yazar. Üçüncü geçiş n'yi 6 yapar ve 6 yazar. Sonra başka değer kalmaz, döngü biter. Bu sayfada int i = 0 veya i < slots.length yazmadınız. for-each başlığı Java'dan her saklanan değeri bir kez ziyaret etmesini ister. n adı her geçişte yalnızca bir sonraki öğeyi tutması anlamında yenidir; yine de başlıkta bir kez int n olarak bildirirsiniz.

String dizisini aynı yolla gezin

Saklanan diziyi ve öğe türünü değiştirin ki her değer kısa bir sözcük olsun:
String[] tags = {"red", "blue"};
for (String t : tags) {
System.out.println(t);
}
Şimdi ekran iki satır göstermelidir: red, sonra blue. İki nokta üst üste hâlâ öğe türü ile dizi adı arasındadır. Gövde hâlâ bir öğeyi tutan adı yazdırır.

String dizisini gez

java
public class Pack {
    public static void main(String[] args) {
        String[] tags = {"red", "blue"};
        for (String t : tags) {
            System.out.println(t);
        }
    }
}

Yeniden derleyip çalıştırın: javac Pack.java, sonra java Pack. İki satır görmelisiniz. int dizisini String dizisiyle değiştirdiniz ve öğe adının türünü String ile eşlediniz. red ve blue'yu gördükten sonra int demosunu geri koyabilirsiniz. Her iki sürüm de geçerli Java'dır. Aynı for-each biçimini farklı öğe türleriyle öğretirler.

String çalıştırmasını bir kez daha okuyun. tags red, sonra blue tutar. İlk geçiş t'yi red yapar ve yazdırır. İkinci geçiş t'yi blue yapar ve yazdırır. Sonra döngü biter. Dizi yazımındaki tırnaklar dizide saklanan metni işaretler. t'nin etrafında ekstra tırnak olmadan println(t) bu saklanan harfleri ekrana yazar.

for-each'i net tutan kurallar

Yuvarlak parantezler sırayla tür, ad, iki nokta üst üste ve dizi adını tutmalıdır. İki nokta üst üste olmadan for (int n slots) yazmak javac'ın hata vermesine yol açar. Öğe türü diziye uymalıdır: int ile int dizisi, String ile String dizisi. String[] yanında int n koymak bu dersin derlediği biçim değildir. Gövde bir veya daha fazla satır olduğunda süslü parantezler yine gövdeyi tutar.

for-each, Beat sayfasındaki sayılı for değildir ve Skip sayfasındaki break de değildir. Sayılı for başlangıç, sınama ve adımı bir sayaçla yazıyordu. for-each zaten dizide saklanmış değerleri gezer. break bir döngüyü erken bitirir; bu sayfanın ilk demosu her değeri yazdırır. Aynı main içinde Skip sayfasının break demosunu veya Pulse sayfasının while'ını bırakmayın ve ekranın neden 2, 4, 6 yerine 1 ve 2 gösterdiğine şaşırmayın. Bu oturumun main'i yalnızca diziyi ve for-each'i tutmalıdır.

Yaygın bir karışıklık sözdiziminin kendisini yazdırmaktır: System.out.println("for (int n : slots)");. Bu, başlığın karakterlerini yazar. Diziyi gezmez. Başka bir karışıklık tırnaklı System.out.println("n"); satırıdır; her geçişte 2, 4 ve 6 yerine n harfini yazdırır. Ekranda öğe değerini istiyorsanız println(n) satırını tırnaksız tutun.

Dizide öğe yoksa — örneğin int[] slots = {}; — gövde hiç çalışmaz ve ekran boş kalır. Bu yine geçerli bir for-each'tir; bu dersin demoları yazdırılan satırları görebilmeniz için en az iki değer tutar. Sonra ekranda bir indeks numarasına ihtiyaç duyduğunuzda sayılı for geri gelir; for-each, o indeksi kendiniz yönetmeden değerleri ziyaret etmek içindir. Döngü içinde n = 9; ile değeri değiştirmek bu başlangıç biçiminde dizi yuvasını yeniden yazmaz — n'yi slots'u düzenlemek için bir araç değil, yazdırmak üzere okuduğunuz değer olarak görün.

Artık ne yapabilirsiniz

Bir dizi tutabilir, for (Type name : arrayName) yazabilir ve her değeri bir kez yazdırabilirsiniz. Öğe türünün diziyle eşleşmesi döngüyü derlenebilir tutar. Sonraki sayfa methods'tur; orada satırları main'den çağırabileceğiniz bir ad altında gruplarsınız.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
6
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek