CodeGym /Java Blog /Acak /Untuk-setiap loop di Jawa
John Squirrels
Level 41
San Francisco

Untuk-setiap loop di Jawa

Dipublikasikan di grup Acak

Apa itu untuk setiap loop?

A for-each adalah sejenis perulangan for yang Anda gunakan saat Anda perlu memproses semua elemen array atau koleksi. Yang mengatakan, frase untuk-masing-masing tidak benar-benar digunakan dalam loop ini. Sintaksnya adalah sebagai berikut:

for (type itVar : array) 
{ 
    // Operations
}
Di mana type adalah tipe variabel iterator (yang cocok dengan tipe data elemen dalam array!), itVar adalah namanya, dan array adalah array (struktur data lain juga diperbolehkan, misalnya, semacam koleksi, seperti ArrayList ), yaitu objek tempat loop dieksekusi. Seperti yang Anda lihat, konstruk ini tidak menggunakan penghitung: variabel iterator hanya mengulangi elemen-elemen array atau koleksi. Ketika loop seperti itu dieksekusi, variabel iterator secara berurutan diberi nilai dari setiap elemen array atau kumpulan, setelah itu blok pernyataan (atau pernyataan) yang ditentukan dieksekusi.

Selain for-each loop, Java juga memiliki metode forEach() . Anda dapat membacanya di artikel berjudul "Berhenti menulis loop!" 10 praktik terbaik teratas untuk bekerja dengan koleksi di Java 8

Catatan:perulangan untuk setiap dapat diterapkan ke array dan kelas apa pun yang mengimplementasikan antarmuka java.lang.Iterable . Loop for berikut akan sama dengan kode di atas:

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

Contoh untuk setiap loop

Kami membuat berbagai nilai siswa. Kemudian kami menggunakan perulangan untuk setiap untuk mencetak semua perkiraan, menghitung skor rata-rata, dan menemukan 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));
    }

}
Keluaran 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 seperti apa metode untuk mencetak semua skor jika kita menggunakan for loop 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 metode ini dari metode utama , maka kita mendapatkan hasil sebagai berikut:

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

Contoh perulangan untuk setiap dengan koleksi

Kami membuat kumpulan nama dan menampilkan semua nama di layar.

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

Keterbatasan untuk setiap loop

Bentuk ringkas perulangan untuk setiap perulangan dianggap lebih mudah dibaca daripada perulangan for , dan dianggap sebagai praktik terbaik untuk menggunakan perulangan perulangan sedapat mungkin. Namun, perulangan untuk setiap adalah konstruksi yang kurang universal daripada perulangan for biasa . Berikut adalah beberapa kasus sederhana di mana perulangan untuk setiap tidak akan bekerja sama sekali atau akan bekerja, tetapi hanya dengan kesulitan.
  1. Jika Anda ingin menjalankan satu putaran dari ujung ke awal. Artinya, tidak ada untuk setiap loop yang merupakan analog langsung dengan kode berikut:

    
    for (int i= array.length-1; i>0; i--) 
    {
          System.out.println(array[i]);
    }
    
  2. For-each tidak cocok jika Anda ingin membuat perubahan pada array. Misalnya, Anda tidak dapat mengurutkan array tanpa mengubah lokasi elemennya. Selain itu, dalam kode berikut, hanya variabel iterator yang akan berubah, bukan elemen array:

    
    for (int itVar : array) 
    {
        itVar = itVar++; 
    }
    
  3. Jika Anda mencari elemen dalam array dan Anda perlu mengembalikan (atau meneruskan) indeks elemen yang Anda cari, lebih baik menggunakan for loop biasa .

Video bermanfaat tentang untuk setiap putaran

Loop dalam kursus CodeGym

Di CodeGym, kami mulai berlatih menggunakan loop di Level 4 dari pencarian Sintaks Java . Beberapa pelajaran di level itu, serta banyak tugas di berbagai level, dikhususkan untuk putaran untuk memperkuat keterampilan Anda dalam mengerjakannya. Pada dasarnya, tidak ada cara untuk menghindarinya — loop adalah salah satu konstruksi terpenting dalam pemrograman.

Informasi lebih lanjut tentang untuk-masing-masing dan loop lainnya

  1. Pernyataan while . Artikel ini membahas jenis loop yang paling sederhana: whileloop, yang digunakan CodeGym untuk memperkenalkan loop kepada siswa.
  2. Berhenti menulis loop! 10 praktik terbaik teratas untuk bekerja dengan koleksi di Java 8 . Artikel ini akan membantu siswa CodeGym yang setidaknya setengah jalan mempelajari banyak hal menarik tentang bekerja dengan koleksi.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION