CodeGym /בלוג Java /Random-HE /לולאות מקוננות של ג'אווה
John Squirrels
רָמָה
San Francisco

לולאות מקוננות של ג'אווה

פורסם בקבוצה
Java, כמו רוב שפות התכנות האחרות, תומכת בלולאות מקוננות. זה אומר רק לולאה בתוך לולאה. במאמר זה, אנו הולכים לגלות כיצד לעבוד עם לולאות מקוננות ב-Java.

לולאות מקוננות של Java

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

  • בעוד לולאה

  • לעשות... תוך כדי לולאה

  • לכל לולאה

כולם תומכים בלולאות מקוננות. מבנים של לולאה מקוננים משמשים כאשר יש לעמוד בשני תנאים, האחד תלוי בשני. לדוגמה, אם אתה צריך להציג מטריצה ​​דו מימדית, חצי פירמידה או לוח הכפל.

כיצד פועלות לולאות מקוננות של Java

כנראה הלולאה הנפוצה ביותר ב-Java היא עבור , במידה רבה משום שהיא די תכליתית והקוד איתה די קל לקריאה. להלן התחביר הכללי עבור לולאה מקוננת :

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
איך הוא עובד? הלולאה החיצונית מתחילה. לאחר מכן ה- Nested for לולאה מתחילה את העבודה ועוברת את האינדקס שלה עד שהתנאי מתקיים, ושוב מעבירה את העבודה ללולאה החיצונית, וזה קורה עד שהתנאי של הלולאה החיצונית מתקיים. נשמע קצת מסובך, לא? ובכן, זה יהיה הרבה יותר קל להבין עם דוגמה ספציפית, אז בואו נעבור לזה.

מקונן לדוגמא של קוד לולאה

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

public class NestedLoopsDemo1 {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j<=i;  j++)
               System.out.print("*");
           System.out.println();
       }
      
   }
}
הפלט הוא:
*** *** **** ***** ****** ******** ******** ************ *****

דוגמה לקוד לולאה מקונן בעוד


public class NestedLoopsDemo2 {

   public static void main(String[] args) {

       int i = 0;
       while (i < 10) {
           int j = 0;
           while (j <= i) {
               System.out.print("*");
               j++;
           }
           System.out.println();
           i++;

       }
   }
}
הפלט הוא בדיוק כמו בדוגמה הקודמת:
*** *** **** ***** ****** ******** ******** ************ *****
לולאת ה- do...while דומה ללולאת while . ההבדל העיקרי הוא שהגוף של do...while loop מבוצע פעם אחת לפני בדיקת הביטוי.

דוגמה לקוד של Nested foreach loops

ניתן לקנן עבור כל לולאה כרגיל עבור לולאה. להלן הדוגמה של לולאה מקוננת עבור כל לולאה אשר חוזרת על מערך דו מימדי.

public class NestedLoops2 {

       public static void main(String[] args)
       {
           int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };

           for (int[] myArray : mainArray)
           {
               for (int i : myArray)
               {
                   System.out.print(i+" ");
               }
               System.out.println("");
           }
       }
}
הפלט הוא:
5 4 3 2 1 7 8 9 10 11

דוגמה ללולאה מעורבת ותוך כדי

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

public class NestedLoopsDemo2 {

   public static void main(String[] args) {
       int i = 0;
       while (i < 10) {
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
           }
           System.out.println();
           i++;

       }
   }
}
הפלט ללא הפתעות:
*** *** **** ***** ****** ******** ******** ************ *****
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION