1
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
ให้น้อง ๆ ลองสังเกต 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();