CodeGym /בלוג Java /Random-HE /עבור כל לולאה ב-Java
John Squirrels
רָמָה
San Francisco

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

פורסם בקבוצה

מהי לולאה לכל אחד?

for -each הוא סוג של לולאת for שבה אתה משתמש כאשר אתה צריך לעבד את כל האלמנטים של מערך או אוסף. עם זאת, הביטוי for-each אינו משמש למעשה בלולאה זו. התחביר שלו הוא כדלקמן:

for (type itVar : array) 
{ 
    // Operations
}
כאשר type הוא הסוג של משתנה האיטרטור (התואם ל-datatype של אלמנטים במערך!), itVar הוא שמו, ומערך הוא מערך (מותרים גם מבני נתונים אחרים, למשל, אוסף כלשהו, ​​כמו ArrayList ), כלומר האובייקט עליו מבוצעת הלולאה. כפי שאתה יכול לראות, מבנה זה אינו משתמש במונה: המשתנה האיטרטור פשוט חוזר על רכיבי המערך או האוסף. כאשר מופעלת לולאה כזו, למשתנה האיטרטור מוקצה ברצף את הערך של כל אלמנט של המערך או האוסף, ולאחר מכן מבוצע בלוק ההצהרות (או המשפט) שצוין.

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

הערה:ניתן להחיל לולאה עבור כל אחד על מערכים וכל מחלקות המיישמות את הממשק java.lang.Iterable . הקוד הבא עבור לולאה יהיה שווה ערך לקוד שלמעלה:

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

דוגמה ללולאה לכל אחד

אנו יוצרים מערך של ציוני תלמידים. לאחר מכן אנו משתמשים בלולאה עבור כל לולאה כדי להדפיס את כל ההערכות, לחשב את הציון הממוצע ולמצוא את הציון העליון.

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

}
פלט תוכנית:

All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
כעת, בואו נראה איך תיראה שיטה להדפסת כל הציונים אם היינו משתמשים בלולאת רגילה :

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();
    }
אם נקרא לשיטה זו מהשיטה הראשית , נקבל את התוצאה הבאה:

All the scores: |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 , ונחשבת לשיטה הטובה ביותר להשתמש בלולאה לכל אחד בכל מקום אפשרי. עם זאת, לולאה לכל אחד היא מבנה פחות אוניברסלי מאשר לולאה רגילה . הנה כמה מקרים פשוטים שבהם לולאה לכל אחד לא תעבוד בכלל או תעבוד, אבל רק בקושי.
  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. אם אתם מחפשים אלמנט במערך ואתם צריכים להחזיר (או להעביר הלאה) את האינדקס של האלמנט שאתם מחפשים, אז עדיף להשתמש ב-ordinary for loop.

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

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

ב-CodeGym, אנו מתחילים לתרגל שימוש בלולאות ברמה 4 של קווסט Java Syntax . כמה מהשיעורים באותה רמה, כמו גם הרבה מהמשימות ברמות השונות, מוקדשים ללולאות על מנת לחזק את כישוריך בעבודה איתן. בעיקרון, אין שום סיכוי שאתה יכול לברוח מהם - לולאות הן אחד המבנים החשובים ביותר בתכנות.

מידע נוסף על for-each and other לולאות

  1. הצהרת ה-while . המאמר עומד לקראת הסוג הפשוט ביותר של לולאה: whileהלולאה, שבה משתמש CodeGym כדי להציג לולאות לתלמידים.
  2. תפסיק לכתוב לופים! 10 שיטות עבודה מומלצות לעבודה עם אוספים ב-Java 8 . מאמר זה יעזור לתלמידי CodeGym שנמצאים לפחות באמצע הקורס ללמוד הרבה דברים מעניינים על עבודה עם אוספים.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION