2
*
* *
* * *
* * * *
* * * * *
ในรูปนี้ ก็ให้น้อง ๆ เริ่มจากการสังเกต pattern เหมือนเดิมว่าเป็นยังไง เราก็จะได้ว่า
- แถว 1 -> print 1
* - แถว 2 -> print 2
* - แถว 3 -> print 3
* - แถว 4 -> print 4
* - แถว 5 -> print 5
*
เราก็จะเห็นได้ว่า * ในแต่ละแถวของเรา จะมีจำนวนที่เท่ากับเลขแถวเลย
ดังนั้นเราก็จะยังใช้ Nested Loop เหมือนเดิม โดยให้
- Loop นอก ควบคุมจำนวนแถว
- Loop ใน ควบคุมจำนวน
*ที่ต้อง print ในแถวนั้น
แล้วเราจะทำให้ในแต่ละแถว print * ตามเลขลำดับของแถวได้ยังไงล่ะ? คำตอบคือ เราก็ให้ Loop ในที่ทำหน้าที่ควบคุม * ที่ต้อง print ในแถวนั้น ๆ ทำงานเท่ากับเลขแถวที่ Loop ในนี้กำลังทำงานอยู่สิ
ก็คือ
col <= row
เราก็จะได้โค้ดออกมาเป็น
for (int row = 1; row <= 5; row++) {
for (int col = 1; col <= row; col++) {
System.out.print("* ");
}
System.out.println();
}
Output ที่ได้คือ
*
* *
* * *
* * * *
* * * * *
ซึ่ง Loop นอกของเรา ก็จะทำหน้าที่ควบคุมจำนวนแถวเหมือนเดิม
for (int row = 1; row <= 5; row++)
Loop นี้จะหมายความว่า ให้ทำงานทั้งหมด 5 แถว ตั้งแต่แถวที่ 1 ถึงแถวที่ 5
จากนั้น Loop ในของเรา จะทำหน้าที่ควบคุมการ print * ในแต่ละแถว
for (int col = 1; col <= row; col++)
จุดที่ต่างจาก pattern ที่แล้วของเรา ก็คือเราไม่ได้ print * 5 ครั้ง หรือให้ col ≤ 5 แล้ว เพราะแต่ละแถวจะ print * ออกมาเป็นจำนวนเท่ากับเลขแถว หรือก็คือให้ col ≤ row แทนนั่นเอง
หลังจากจบ Loop ในทำงานจนเสร็จ หรือก็คือ print * ครบ 1 แถวแล้ว เราก็จะขึ้นบรรทัดใหม่ด้วย
System.out.println();