02 August 2010

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

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

เราได้ดัดแปลงโปรแกรม 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