JavaRush /בלוג Java /Random-HE /עבור כל לולאה ב-Java

עבור כל לולאה ב-Java

פורסם בקבוצה

מה זה foreach ב-Java?

For-each הוא סוג של לולאת for המשמשת כאשר אתה צריך לעבד את כל האלמנטים של מערך או אוסף. "לכל אחד" מתורגם מאנגלית כ"לכולם". למעשה, הביטוי foreach עצמו אינו בשימוש במחזור זה. התחביר שלו הוא כדלקמן:
for (type itVar : array)
{
    Блок операторов;
}
איפה typeהסוג של המשתנה האיטרטיבי (זהה לסוג הנתונים במערך!), itVarזה שמו, arrayהוא המערך (יכול להיות גם מבנה נתונים אחר, סוג של אוסף, למשל ArrayList), כלומר, ה- אובייקט שעליו מבוצעת הלולאה. כפי שאתה יכול לראות, מונה אינו משמש בעיצוב זה; משתנה האיטרציה חוזר על האלמנטים של מערך או אוסף, ולא על ערכי האינדקס. בעת ביצוע לולאה כזו, משתנה האיטרציה מוקצה ברצף את הערך של כל אלמנט של המערך או האוסף, ולאחר מכן מופעלת בלוק ההצהרות (או המשפט) שצוין.

מלבד לולאת for-each, ל-Java יש גם שיטת forEach()‎. אתה יכול לקרוא על זה, למשל, במאמר " תפסיק לכתוב מחזורים!" 10 השיטות הטובות ביותר לעבודה עם אוספים ב-Java 8

תשומת הלב:ניתן להחיל את הלולאה for-each על מערכים וכל מחלקות שמיישמות את ממשק java.lang.Iterable. המקבילה של הקוד לעיל תהיה הבאה עבור לולאה :
for (int i=0; i<array.length; i++)
{

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

Java לכל דוגמה

בואו ניצור מערך של ציוני תלמידים. לאחר מכן, באמצעות עבור כל אחד, אנו מדפיסים את כל הציונים, מציגים את הציון הממוצע ומוצאים את הציון המקסימלי.
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));
    }

}
פלט תוכנית:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
עכשיו בואו נראה איך תיראה שיטה להדפסת כל הציונים, שנעשה באמצעות לולאה רגילה:
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();
    }
אם נקרא לשיטה זו מתוך השיטה main, נקבל את התוצאה:
All the grades: |5|10|7|8|9|9|10|12|

דוגמה לשימוש בלולאה לכל אחד עם אוספים

בואו ניצור אוסף שמות ונציג את כל השמות על המסך.
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 לא יעבוד בכלל או יעבוד, אבל בקושי.
  1. אם אתה רוצה לעבור לולאה מהסוף להתחלה. כלומר, אין ישיר עבור כל אנלוגי לקוד הבא:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. For-each אינו מתאים אם ברצונך לבצע שינויים במערך. לדוגמה, לא ניתן יהיה למיין מערך מבלי להחליף את האלמנטים שלו. או, בקוד הבא, לא אלמנט המערך ישתנה, אלא רק משתנה האיטרציה:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. אם אתם מחפשים אלמנט במערך וצריכים להחזיר (או להעביר הלאה) את האינדקס של האלמנט שאתם מחפשים, עדיף להשתמש בלולאה רגילה.

סרטון שימושי על לכל אחד שהוכן על ידי תלמיד JavaRush

לולאות בקורס JavaRush

ב-JavaRush, אנו מתחילים להשתמש בלולאות בפועל ברמה 4 של קווסט Java Syntax . ישנן מספר הרצאות המוקדשות להן, וכן משימות רבות ברמות שונות לחיזוק מיומנויות העבודה איתם. באופן כללי, אתה לא יכול לברוח מהם; לולאות הן אחד המבנים החשובים ביותר בתכנות.

עוד על for-each and loops:

  1. For and For-Each Loop: הסיפור על איך חזרתי, חזרתי, אבל לא חזרתי - מאמר מפורט טוב על לולאות עבור ועבור כל בג'אווה. מיועד לקורא מיומן (בערך JavaRush רמה 10 ומעלה).
  2. בעוד הצהרה . המאמר מוקדש למחזור הפשוט ביותר while, איתו אתה מתחיל להכיר מחזורים ב-JavaRush.
  3. תפסיק לכתוב מחזורים! 10 השיטות הטובות ביותר לעבודה עם אוספים ב-Java 8 . ממאמר זה, תלמיד JavaRush שכבר סיים חצי מהקורס או יותר ילמד הרבה על עבודה עם אוספים.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION