JavaRush /Blog Java /Random-MS /untuk-setiap gelung di Jawa

untuk-setiap gelung di Jawa

Diterbitkan dalam kumpulan

Apakah foreach di Jawa?

For-each ialah jenis untuk gelung yang digunakan apabila anda perlu memproses semua elemen tatasusunan atau koleksi. "Untuk setiap" diterjemahkan daripada bahasa Inggeris sebagai "untuk semua orang". Sebenarnya, frasa foreach itu sendiri tidak digunakan dalam gelung ini. Sintaksnya adalah seperti berikut:
for (type itVar : array)
{
    Блок операторов;
}
Di manakah typejenis pembolehubah lelaran (sama dengan jenis data dalam tatasusunan!), itVarialah namanya, arrayialah tatasusunan (mungkin juga terdapat struktur data lain, beberapa jenis pengumpulan, contohnya ArrayList), iaitu, objek di mana gelung dilaksanakan. Seperti yang anda boleh lihat, pembilang tidak digunakan dalam reka bentuk ini; pembolehubah lelaran berulang ke atas elemen tatasusunan atau koleksi, dan bukan nilai indeks. Apabila melaksanakan gelung sedemikian, pembolehubah lelaran diberikan secara berurutan nilai setiap elemen tatasusunan atau koleksi, selepas itu blok pernyataan (atau pernyataan) yang ditentukan dilaksanakan.

Selain daripada gelung untuk setiap, Java juga mempunyai kaedah forEach(). Anda boleh membaca tentangnya, sebagai contoh, dalam artikel " Berhenti menulis kitaran!" 10 Kaedah Terbaik Terbaik untuk Bekerja dengan Koleksi di Java 8

Perhatian:Gelung untuk setiap boleh digunakan pada tatasusunan dan mana-mana kelas yang melaksanakan antara muka java.lang.Iterable. Setara dengan kod di atas adalah seperti berikut untuk gelung :
for (int i=0; i<array.length; i++)
{

    Блок операторов;
}

Java untuk contoh

Mari kita buat susunan gred pelajar. Kemudian, menggunakan untuk setiap, kami mencetak semua skor, memaparkan skor purata dan mencari skor maksimum.
public class ForEachTest {

//method that prints all grades
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int num : grades) {

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

//method that displays the average score

public static double midGrade(int[] numbers) {
        int grade = 0;

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

    }
//method in which the best (maximum) score is calculated
    public static int bestGrade(int[] numbers) {
        int maxGrade = numbers[0];

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

public static void main(String[] args) {

//array of ratings
int[] grades = {5, 10, 7, 8, 9, 9, 10, 12};


  int highest_marks = bestGrade(grades);
        System.out.print("All the grades: ");
        printAllGrades(grades);
        System.out.println("The highest grade is " + highest_marks);
        System.out.println("The average grade is " + midGrade(grades));
    }

}
Output program:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
Sekarang mari kita lihat bagaimana kaedah untuk mencetak semua markah akan kelihatan, dilakukan menggunakan gelung untuk biasa:
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int i = 0; i < grades.length; i++) {

            System.out.print(grades[i] + "|");
        }
        System.out.println();
    }
Jika kita memanggil kaedah ini daripada kaedah main, kita akan mendapat hasilnya:
All the grades: |5|10|7|8|9|9|10|12|

Contoh penggunaan gelung untuk setiap dengan koleksi

Mari buat koleksi nama dan paparkan 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 dianggap lebih mudah dibaca daripada untuk, dan dianggap sebagai amalan yang baik untuk digunakan untuk-setiap di mana ia boleh dilakukan. Walau bagaimanapun, untuk-setiap adalah binaan yang kurang serba boleh berbanding biasa. Berikut ialah beberapa kes mudah di mana penggunaan untuk setiap tidak akan berfungsi sama sekali atau akan berfungsi, tetapi dengan kesukaran.
  1. Jika anda ingin melalui gelung dari hujung ke awal. Iaitu, tiada langsung untuk-setiap analog 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, ia tidak mungkin untuk mengisih tatasusunan tanpa menukar elemennya. Atau, dalam kod berikut, bukan elemen tatasusunan akan berubah, tetapi hanya pembolehubah lelaran:

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

Video berguna tentang untuk setiap yang disediakan oleh pelajar JavaRush

Gelung dalam kursus JavaRush

Di JavaRush, kami mula menggunakan gelung dalam amalan pada tahap 4 pencarian Java Syntax . Terdapat beberapa kuliah yang dikhaskan untuk mereka, serta banyak tugas dari peringkat yang berbeza untuk mengukuhkan kemahiran bekerja dengan mereka. Secara umum, anda tidak boleh lari daripadanya; gelung adalah salah satu binaan yang paling penting dalam pengaturcaraan.

Lebih lanjut mengenai for-each dan gelung:

  1. Untuk dan Untuk-Setiap Gelung: kisah bagaimana saya mengulang, mengulang, tetapi tidak mengulang - artikel terperinci yang bagus tentang untuk dan untuk setiap gelung di Jawa. Direka untuk pembaca terlatih (kira-kira tahap JavaRush 10 dan ke atas).
  2. Manakala kenyataan . Artikel ini ditumpukan kepada kitaran paling mudah while, yang mana anda mula berkenalan dengan kitaran dalam JavaRush.
  3. Berhenti menulis kitaran! 10 kaedah terbaik untuk bekerja dengan koleksi dalam Java 8 . Daripada artikel ini, pelajar JavaRush yang telah menamatkan separuh kursus atau lebih akan belajar banyak tentang bekerja dengan koleksi.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION