CodeGym /Blog Java /rawak /Untuk-setiap gelung di Jawa
John Squirrels
Tahap
San Francisco

Untuk-setiap gelung di Jawa

Diterbitkan dalam kumpulan

Apakah gelung untuk-setiap?

A for-each ialah sejenis gelung for yang anda gunakan apabila anda perlu memproses semua elemen tatasusunan atau koleksi. Yang berkata, frasa untuk-setiap sebenarnya tidak digunakan dalam gelung ini. Sintaksnya adalah seperti berikut:

for (type itVar : array) 
{ 
    // Operations
}
Di mana jenis ialah jenis pembolehubah lelaran (yang sepadan dengan jenis data elemen dalam tatasusunan!), itVar ialah namanya dan tatasusunan ialah tatasusunan (struktur data lain juga dibenarkan, contohnya, sejenis koleksi, seperti ArrayList ), iaitu objek di mana gelung dilaksanakan. Seperti yang anda boleh lihat, binaan ini tidak menggunakan pembilang: pembolehubah lelaran hanya melelang ke atas elemen tatasusunan atau koleksi. Apabila gelung sedemikian dilaksanakan, pembolehubah iterator diberikan secara berurutan nilai setiap elemen tatasusunan atau koleksi, selepas itu blok pernyataan (atau pernyataan) yang ditentukan dilaksanakan.

Sebagai tambahan kepada gelung untuk setiap, Java juga mempunyai kaedah forEach(). Anda boleh membaca tentangnya dalam artikel bertajuk "Berhenti menulis gelung!" 10 amalan terbaik teratas untuk bekerja dengan koleksi di Java 8

Catatan:gelung untuk setiap boleh digunakan pada tatasusunan dan mana-mana kelas yang melaksanakan antara muka java.lang.Iterable . Gelung for berikut akan bersamaan dengan kod di atas:

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

Contoh bagi setiap gelung

Kami mencipta pelbagai markah pelajar. Kemudian kami menggunakan gelung untuk setiap untuk mencetak semua anggaran, mengira skor purata dan mencari skor teratas.

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));
    }

}
Output program:

All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
Sekarang, mari kita lihat kaedah untuk mencetak semua skor jika kita menggunakan gelung biasa :

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();
    }
Jika kita memanggil kaedah ini dari kaedah utama , maka kita mendapat hasil ini:

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

Contoh gelung untuk-setiap dengan koleksi

Kami mencipta koleksi nama dan memaparkan semua nama pada skrin.

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);
        }

Had bagi setiap gelung

Bentuk padat untuk setiap gelung dianggap lebih mudah dibaca daripada gelung for dan dianggap sebagai amalan terbaik untuk menggunakan gelung untuk setiap gelung di mana mungkin. Walau bagaimanapun, untuk setiap gelung adalah binaan yang kurang universal daripada gelung untuk biasa . Berikut ialah beberapa kes mudah di mana gelung untuk setiap sama ada tidak akan berfungsi sama sekali atau akan berfungsi, tetapi hanya dengan kesukaran.
  1. Jika anda ingin menjalankan satu gelung dari hujung hingga awal. Iaitu, tiada untuk setiap gelung yang merupakan analog langsung kepada kod berikut:

    
    for (int i= array.length-1; i>0; i--) 
    {
          System.out.println(array[i]);
    }
    
  2. For-each tidak sesuai jika anda ingin membuat perubahan pada tatasusunan. Sebagai contoh, anda tidak boleh mengisih tatasusunan tanpa mengubah lokasi elemennya. Selain itu, dalam kod berikut, hanya pembolehubah lelaran akan berubah, bukan elemen tatasusunan:

    
    for (int itVar : array) 
    {
        itVar = itVar++; 
    }
    
  3. Jika anda sedang mencari elemen dalam tatasusunan dan anda perlu mengembalikan (atau meneruskan) indeks elemen yang anda cari, maka lebih baik menggunakan gelung untuk biasa .

Video berguna tentang gelung untuk setiap

Gelung dalam kursus CodeGym

Pada CodeGym, kami mula berlatih menggunakan gelung pada Tahap 4 pencarian Java Syntax . Beberapa pelajaran dalam tahap itu, serta banyak tugas dalam pelbagai peringkat, ditumpukan kepada gelung untuk mengukuhkan kemahiran anda dalam bekerja dengan mereka. Pada asasnya, tiada cara anda boleh melarikan diri - gelung adalah salah satu binaan yang paling penting dalam pengaturcaraan.

Maklumat lanjut tentang untuk setiap satu dan gelung lain

  1. Penyataan sementara . Artikel ini adalah mengenai jenis gelung yang paling mudah: whilegelung, yang CodeGym gunakan untuk memperkenalkan gelung kepada pelajar.
  2. Berhenti menulis gelung! 10 amalan terbaik teratas untuk bekerja dengan koleksi di Java 8 . Artikel ini akan membantu pelajar CodeGym yang sekurang-kurangnya separuh daripada kursus mempelajari banyak perkara menarik tentang bekerja dengan koleksi.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION