* * * * *  
* * * * *  
* * * * *  
* * * * *  
* * * * *

ให้น้อง ๆ ลองสังเกต pattern ของรูปนี้ดู ว่าเป็นยังไง จะได้ว่า

  • รูปนี้มี 5 แถว
  • แต่ละแถวมี 5 *

ดังนั้น เราสามารถที่จะคิดได้ว่า

  • แถว 1 -> print 5 *
  • แถว 2 -> print 5 *
  • แถว 3 -> print 5 *
  • แถว 4 -> print 5 *
  • แถว 5 -> print 5 *

จะเห็นได้ว่าในทุก ๆ แถว จะทำงานเหมือนกันหมดเลย ก็คือ print 5 * แล้วการทำงานซ้ำ ๆ แบบนี้ แน่นอนว่าเราก็ต้องใช้ Loop นั่นเอง

ก่อนอื่น ให้น้อง ๆ ลอง print ออกมา 1 แถวก่อน เราก็จะได้โค้ดแบบนี้

for (int col = 1; col <= 5; col++) {
	System.out.print("* ");
}

เราก็จะได้ Output เป็น

* * * * *

Loop นี้ทำงานโดยการให้ค่าเริ่มต้น col (ย่อมาจาก column) โดยให้เริ่มต้นที่ 1 และทำงานเรื่อย ๆ จนถึง 5 ในแต่ละรอบจะให้ print * 1 อัน โดยเราใช้ print ไม่ใช่ println เพราะเราอยากจะให้แต่ละ * อยู่ในบรรทัดเดียวกัน

แล้วเราจะทำแบบนี้ทั้งหมด 5 แถวได้ยังไง? คำตอบคือ เราก็ใช้ Loop อีกตัวมาควบคุมให้ Loop ที่ print * 1 แถวนี้ให้มันทำงาน 5 ครั้งสิ ก็คือจับ Loop ทั้งก้อนนี้ไปไว้ในอีก Loop อีกตัวนั่นเอง

for (int row = 1; row <= 5; row++) {
    for (int col = 1; col <= 5; col++) {
        System.out.print("* ");
    }
    System.out.println();
}

เราก็จะได้ Output เป็น

* * * * *
* * * * *
* * * * *
* * * * *
* * * * *

ซึ่งการที่เรามี Loop ซ้อนกัน 2 Loop แบบนี้ เราเรียกว่า Nested Loop นั่นเอง ให้น้อง ๆ สังเกตดูว่าเราจะมี Loop นอก Loop ใน

ซึ่ง Loop นอกของเรา จะทำหน้าที่ควบคุมจำนวนแถว

for (int row = 1; row <= 5; row++)

Loop นี้จะหมายความว่า ให้ทำงานทั้งหมด 5 แถว ตั้งแต่แถวที่ 1 ถึงแถวที่ 5

จากนั้น Loop ในของเรา จะทำหน้าที่ควบคุมการ print * ในแต่ละแถว

for (int col = 1; col <= 5; col++)

Loop นี้จะหมายความว่า ในบรรทัดนี้ให้ print 5 *

หลังจากจบ Loop ในทำงานจนเสร็จ หรือก็คือ print * ครบ 1 แถวแล้ว เราก็จะขึ้นบรรทัดใหม่ด้วย

System.out.println();
Built with LogoFlowershow