02 August 2010

[java] การใช้ Labeled continue ใน for loop

Java ยอมให้มีการใช้ label ในการหยุดและเริ่มการประมวลผลใหม่ ซึ่งโปรแกรมเมอร์หลาย ๆ ท่านไม่
ค่อยจะเห็นด้วยกับการใช้การประมวลผลในลักษณะนี้เท่าใดนัก เรามาดูตัวอย่างกัน
/* LabledContinue.java */
import java.io.*;
class LabeledContinue {
public static void main(String[] args) {
    label: for(int row = 1; row <= 10; row++) {
               System.out.println();
                for(int column = 1; column <= 10; column++) {
                    if(column > row)
                      continue label; //goto label
                    System.out.print("*");
                 }
               }
   }
}

เราได้ดัดแปลงโปรแกรม Continue.java ของเราสำหรับการแสดงการใช้ labeled continue ในโปรแกรม LabeledContinue.java เรากำหนดให้มี identifier ที่มีชื่อว่า label อยู่ก่อนหน้า for loop ด้านนอกของเรา ซึ่งต้องมีเครื่องหมาย ':' ตามหลังเสมอ และในการใช้ continue ใน for loop ด้านในนั้นเราจะต้องมี identifier ที่เราใช้ตามหลัง continue เสมอ การประมวลด้วย labeled continue ก็ไม่ยากนักที่จะทำความเข้าใจ เมื่อค่าของ column มากกว่าค่าของ row การทำงานใน for loop ด้านในก็สิ้นสุดลงและไปเริ่มต้นใหม่ที่ for loop ด้านนอก เพราะนั่นเป็นที่ที่มี label อยู่ การทำงานแบบนี้ก็เหมือนกับการกระโดดไปยังตำแหน่งที่เราต้องการจะไปนั่นเอง ทั้งนี้ก็ต้องขึ้นอยู่กับเงื่อนไขที่เราได้ตั้งไว้

No comments:

Post a Comment