JavaRush /Java Blog /Random-TL /para sa-bawat loop sa Java

para sa-bawat loop sa Java

Nai-publish sa grupo

Ano ang foreach sa Java?

Ang For-each ay isang uri ng for loop na ginagamit kapag kailangan mong iproseso ang lahat ng elemento ng isang array o koleksyon. Ang "Para sa bawat isa" ay isinalin mula sa Ingles bilang "para sa lahat". Sa totoo lang, ang pariralang foreach mismo ay hindi ginagamit sa cycle na ito. Ang syntax nito ay ang mga sumusunod:
for (type itVar : array)
{
    Блок операторов;
}
Nasaan typeang uri ng umuulit na variable (kapareho ng uri ng data sa array!), itVarang pangalan nito, arrayay ang array (maaaring mayroon ding isa pang istraktura ng data, ilang uri ng koleksyon, halimbawa ArrayList), iyon ay, ang bagay kung saan ang loop ay naisakatuparan. Gaya ng nakikita mo, hindi ginagamit ang counter sa disenyong ito; umuulit ang variable ng pag-ulit sa mga elemento ng array o koleksyon, at hindi ang mga halaga ng index. Kapag nagsasagawa ng naturang loop, ang variable ng pag-ulit ay sunud-sunod na itinalaga ang halaga ng bawat elemento ng array o koleksyon, pagkatapos nito ay isasagawa ang tinukoy na bloke ng mga pahayag (o pahayag).

Bukod sa for-each loop, ang Java ay mayroon ding forEach() method. Maaari mong basahin ang tungkol dito, halimbawa, sa artikulong " Itigil ang pagsusulat ng mga siklo!" Nangungunang 10 Pinakamahusay na Paraan para sa Paggawa sa Mga Koleksyon sa Java 8

Pansin:Maaaring ilapat ang para sa bawat loop sa mga array at anumang klase na nagpapatupad ng java.lang.Iterable na interface. Ang katumbas ng code sa itaas ay ang sumusunod para sa loop :
for (int i=0; i<array.length; i++)
{

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

Java foreach halimbawa

Gumawa tayo ng hanay ng mga marka ng mag-aaral. Pagkatapos, gamit ang para sa bawat isa, ini-print namin ang lahat ng mga marka, ipinapakita ang average na marka, at hinahanap ang maximum ng mga ito.
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 ng programa:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
Ngayon tingnan natin kung ano ang magiging hitsura ng isang paraan para sa pag-print ng lahat ng mga marka, na ginawa gamit ang isang regular na para sa loop:
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();
    }
Kung tatawagin natin ang pamamaraang ito mula sa pamamaraan main, makukuha natin ang resulta:
All the grades: |5|10|7|8|9|9|10|12|

Isang halimbawa ng paggamit ng para sa bawat loop na may mga koleksyon

Gumawa tayo ng koleksyon ng mga pangalan at ipakita ang lahat ng pangalan sa screen.
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);
        }

Mga limitasyon ng para sa bawat loop

Ang compact na anyo ng para sa bawat isa ay itinuturing na mas nababasa kaysa para sa, at ito ay itinuturing na magandang kasanayan na gamitin para sa bawat isa kung saan ito magagawa. Gayunpaman, para sa-bawat isa ay isang mas maraming nalalaman na konstruksyon kaysa sa regular para sa. Narito ang ilang simpleng mga kaso kung saan ang paggamit para sa bawat isa ay hindi gagana o gagana, ngunit mahirap.
  1. Kung gusto mong dumaan sa isang loop mula dulo hanggang simula. Ibig sabihin, walang direktang para-bawat analogue sa sumusunod na code:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. Para sa-bawat isa ay hindi angkop kung gusto mong gumawa ng mga pagbabago sa isang array. Halimbawa, hindi posibleng pag-uri-uriin ang isang array nang hindi pinapalitan ang mga elemento nito. O, sa sumusunod na code, hindi ang array element ang magbabago, ngunit ang iteration variable lang:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. Kung naghahanap ka ng elemento sa isang array at kailangan mong ibalik (o ipasa) ang index ng elementong hinahanap mo, mas mabuting gumamit ng regular na for loop.

Kapaki-pakinabang na video tungkol sa bawat isa na inihanda ng isang mag-aaral ng JavaRush

Mga loop sa kursong JavaRush

Sa JavaRush, nagsisimula kaming gumamit ng mga loop sa pagsasanay sa antas 4 ng Java Syntax quest . Mayroong ilang mga lektura na nakatuon sa kanila, pati na rin ang maraming mga gawain ng iba't ibang antas upang palakasin ang mga kasanayan sa pakikipagtulungan sa kanila. Sa pangkalahatan, hindi mo sila matatakasan; ang mga loop ay isa sa pinakamahalagang konstruksyon sa programming.

Higit pa tungkol sa para sa bawat isa at mga loop:

  1. Para sa at Para sa-Bawat Loop: ang kuwento kung paano ako umulit, umulit, ngunit hindi umulit - isang magandang detalyadong artikulo tungkol sa para sa at para sa bawat mga loop sa Java. Idinisenyo para sa isang sinanay na mambabasa (humigit-kumulang JavaRush antas 10 at mas mataas).
  2. Habang pahayag . Ang artikulo ay nakatuon sa pinakasimpleng cycle while, kung saan nagsisimula kang maging pamilyar sa mga cycle sa JavaRush.
  3. Itigil ang pagsusulat ng mga siklo! Nangungunang 10 pinakamahusay na paraan para sa pagtatrabaho sa mga koleksyon sa Java 8 . Mula sa artikulong ito, maraming matututunan ang isang mag-aaral ng JavaRush na nakatapos na ng kalahati ng kurso o higit pa tungkol sa pagtatrabaho sa mga koleksyon.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION