CodeGym /จาวาบล็อก /สุ่ม /Java ซ้อนลูป
John Squirrels
ระดับ
San Francisco

Java ซ้อนลูป

เผยแพร่ในกลุ่ม
Java เช่นเดียวกับภาษาโปรแกรมอื่นๆ ส่วนใหญ่ สนับสนุนการวนซ้ำซ้อนกัน นี่หมายถึงการวนซ้ำภายในลูป ในบทความนี้ เราจะมาเรียนรู้เกี่ยวกับวิธีการทำงานกับลูปซ้อนใน Java

Java ซ้อนลูป

การวนซ้ำเรียกว่าซ้อนหากวางไว้ภายในลูปอื่น ในรอบแรก วงรอบนอกจะเรียกวงวงในซึ่งทำงานจนเสร็จสิ้น หลังจากนั้นการควบคุมจะถูกถ่ายโอนไปยังเนื้อหาของวงรอบนอก ในรอบที่สอง วงนอกจะเรียกวงในอีกครั้ง และต่อไปจนกว่าวงรอบนอกจะสิ้นสุดลง มีสี่ประเภทของการวนซ้ำใน Java:
  • สำหรับลูป

  • ในขณะที่วนซ้ำ

  • ทำ ... ในขณะที่วนซ้ำ

  • สำหรับแต่ละวง

พวกเขาทั้งหมดสนับสนุนลูปที่ซ้อนกัน โครงสร้างลูปแบบซ้อนจะใช้เมื่อสองเงื่อนไขต้องตรงตามเงื่อนไข โดยเงื่อนไขหนึ่งจะขึ้นอยู่กับอีกเงื่อนไขหนึ่ง ตัวอย่างเช่น หากคุณต้องการแสดงเมทริกซ์สองมิติ กึ่งพีระมิด หรือตารางสูตรคูณ

วิธีการทำงานของลูปที่ซ้อนกันของ Java

ส่วน ใหญ่แล้วลูปที่ใช้มากที่สุดใน Java คือforส่วนใหญ่เพราะมันค่อนข้างหลากหลายและโค้ดที่ใช้ก็ค่อนข้างอ่านง่าย นี่คือไวยากรณ์ทั่วไปสำหรับการวนซ้ำที่ซ้อนกัน:

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

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
เขาทำงานอย่างไร? วงรอบนอกเริ่มต้นขึ้น จากนั้นลูปที่ซ้อนกันสำหรับลูปจะเริ่มทำงานและผ่านดัชนีจนกว่าจะตรงตามเงื่อนไข และส่งงานไปยังลูปภายนอกอีกครั้ง และสิ่งนี้จะเกิดขึ้นจนกว่าจะตรงตามเงื่อนไขของลูปภายนอก ฟังดูยุ่งยากไปหน่อยใช่ไหม มันจะง่ายกว่ามากที่จะเข้าใจด้วยตัวอย่างที่เฉพาะเจาะจง ดังนั้นเรามาเริ่มกันเลย

ซ้อนกันสำหรับตัวอย่างรหัสลูป

นี่คือตัวอย่างคลาสสิก ลองพิมพ์ครึ่งปิรามิดโดยใช้สองลูป หนึ่งในนั้นซ้อนอยู่

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 จะถูกดำเนินการหนึ่งครั้งก่อนการตรวจสอบนิพจน์

ตัวอย่างโค้ด foreach ที่ซ้อนกัน

สำหรับแต่ละลูปสามารถซ้อนกันได้ตามปกติสำหรับลูป นี่คือตัวอย่างสำหรับแต่ละลูปที่ซ้อนกันซึ่งวนซ้ำอาร์เรย์ 2 มิติ

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

ตัวอย่างการวนลูป for และ while

บางครั้งเราสามารถซ้อนลูปประเภทต่างๆ เข้าด้วยกันได้ ตัวอย่างเช่นสำหรับภายในwhileหรือสำหรับภายในfor- each อย่างไรก็ตาม นี่ไม่ใช่แนวทางปฏิบัติในการเขียนโปรแกรมที่ดีที่สุด โครงสร้างดังกล่าวทำให้ความสามารถในการอ่านโค้ดลดลงอย่างมาก ดังนั้นโปรแกรมเมอร์มืออาชีพจึงพยายามอย่าผสมโปรแกรมใดโปรแกรมหนึ่งเข้าด้วยกัน พวกเขาทำ แต่ถ้าจำเป็นจริงๆ และอีกหนึ่งกฎเล็กๆ น้อยๆ: หากคุณเลือกระหว่างwhileและforให้ใช้forหากเป็นไปได้ อย่างไรก็ตาม เราจะยกตัวอย่างการใช้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