CodeGym /Java Blogu /Rastgele /Java'da her döngü için
John Squirrels
Seviye
San Francisco

Java'da her döngü için

grupta yayınlandı

for-each döngüsü nedir?

for -each, bir dizinin veya koleksiyonun tüm öğelerini işlemeniz gerektiğinde kullandığınız bir tür for döngüsüdür. Bununla birlikte, for-each ifadesi aslında bu döngüde kullanılmaz. Sözdizimi aşağıdaki gibidir:

for (type itVar : array) 
{ 
    // Operations
}
type, yineleyici değişkenin türü olduğunda (dizideki öğelerin veri türüyle eşleşen!), itVar onun adıdır ve array bir dizidir (diğer veri yapılarına da izin verilir, örneğin, ArrayList gibi bir tür koleksiyona izin verilir) ), yani döngünün yürütüldüğü nesne. Gördüğünüz gibi, bu yapı bir sayaç kullanmaz: yineleyici değişken, dizinin veya koleksiyonun öğeleri üzerinde yinelenir. Böyle bir döngü yürütüldüğünde, yineleyici değişkene sırayla dizinin veya koleksiyonun her bir öğesinin değeri atanır ve ardından belirtilen ifade bloğu (veya ifade) yürütülür.

for-each döngüsüne ek olarak, Java ayrıca bir forEach() yöntemine sahiptir. Bunu "Döngü yazmayı bırak!" Başlıklı makalede okuyabilirsiniz. Java 8'de koleksiyonlarla çalışmak için en iyi 10 uygulama

Not:java.lang.Iterable arabirimini uygulayan dizilere ve tüm sınıflara bir for-each döngüsü uygulanabilir . Aşağıdaki for döngüsü, yukarıdaki koda eşdeğer olacaktır:

for (int i=0; i < array.length; i++) 
{ 
    
    // Statements 
}

for-each döngüsü örneği

Bir dizi öğrenci puanı oluşturuyoruz. Ardından , tüm tahminleri yazdırmak, ortalama puanı hesaplamak ve en yüksek puanı bulmak için her biri için bir döngü kullanırız .

public class ForEachTest {
    
// A method that prints all scores     
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int num : scores) {

            System.out.print(num + "|");
        }
        System.out.println();
    }

// A method that displays the average score 
    
public static double getAverageScore(int[] numbers) {
        int totalScore = 0;

        for (int num : numbers) {
            totalScore = num + totalScore;
        }
        return ((double) totalScore / numbers.length);

    }
// A method that determines the best (maximum) score 
    public static int getBestScore(int[] numbers) {
        int maxScore = numbers[0];

        for (int num : numbers) {
            if (num > maxScore) {
                maxScore = num;
            }
        }
        return maxScore;
    }

public static void main(String[] args) {
      
// Array of scores 
int[] scores = {5, 10, 7, 8, 9, 9, 10, 12};

        
  int bestScore = getBestScore(scores);
        System.out.print("All the scores: ");
        printAllScores(scores);
        System.out.println("The highest score is " + bestScore);
        System.out.println("The average score is " + getAverageScore(scores));
    }

}
Programın çıkışı:

All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
Şimdi, sıradan bir for döngüsü kullansaydık, tüm puanları yazdırmak için bir yöntemin nasıl görüneceğini görelim :

public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int i = 0; i < scores.length; i++) {

            System.out.print(scores[i] + "|");
        }
        System.out.println();
    }
Bu yöntemi ana yöntemden çağırırsak , şu sonucu alırız:

All the scores: |5|10|7|8|9|9|10|12|

Koleksiyonları olan for-each döngüsü örneği

Bir isim koleksiyonu oluşturuyoruz ve tüm isimleri ekranda gösteriyoruz.

List<String> names = new ArrayList<>();
        names.add("Snoopy");
        names.add("Charlie");
        names.add("Linus");
        names.add("Shroeder");
        names.add("Woodstock");

        for(String name : names){
            System.out.println(name);
        }

for-each döngüsünün sınırlamaları

for -each döngüsünün kompakt formunun okunması, for döngüsünden daha kolay kabul edilir ve mümkün olan her yerde for-each döngüsünü kullanmak en iyi uygulama olarak kabul edilir . Bununla birlikte, bir for-each döngüsü, sıradan bir for döngüsünden daha az evrensel bir yapıdır . İşte bir for-each döngüsünün ya hiç çalışmadığı ya da çalışacağı, ancak zorlukla çalışacağı bazı basit durumlar.
  1. Sondan başa bir döngüden geçmek istiyorsanız. Yani, aşağıdaki koda doğrudan bir analog olan for-each döngüsü yoktur :

    
    for (int i= array.length-1; i>0; i--) 
    {
          System.out.println(array[i]);
    }
    
  2. Bir dizide değişiklik yapmak istiyorsanız For-each uygun değildir. Örneğin, elemanlarının yerini değiştirmeden bir diziyi sıralayamazsınız. Ek olarak, aşağıdaki kodda, dizinin öğesi değil, yalnızca yineleyici değişkeni değişecektir:

    
    for (int itVar : array) 
    {
        itVar = itVar++; 
    }
    
  3. Bir dizide bir öğe arıyorsanız ve aradığınız öğenin dizinini döndürmeniz (veya iletmeniz) gerekiyorsa, sıradan bir for döngüsü kullanmak daha iyidir .

for-each döngüsü hakkında faydalı bir video

CodeGym kursundaki döngüler

CodeGym'de, Java Sözdizimi arayışının 4. Seviyesinde döngüleri kullanmaya başlıyoruz . Bu seviyedeki derslerin birçoğu ve çeşitli seviyelerdeki görevlerin çoğu, onlarla çalışma becerilerinizi pekiştirmek için döngülere ayrılmıştır. Temel olarak, onlardan kaçmanın hiçbir yolu yoktur - döngüler programlamadaki en önemli yapılardan biridir.

for-each ve diğer döngüler hakkında daha fazla bilgi

  1. while ifadesi . Makale, en basit döngü türüyle ilgili: whileCodeGym'in öğrencilere döngüleri tanıtmak için kullandığı döngü.
  2. Döngü yazmayı bırak! Java 8'de koleksiyonlarla çalışmak için en iyi 10 uygulama . Bu makale, kursun en azından yarısında olan CodeGym öğrencilerinin koleksiyonlarla çalışma hakkında birçok ilginç şey öğrenmesine yardımcı olacaktır.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION