網頁

2010年5月7日 星期五

【JAVA】用label為迴圈命名。

用label為迴圈命名。
label代表的是迴圈的標示記號,撰寫JAVE程式的時候可以利用label指向相對應的迴圈,定義標示名稱有以下2種方式:
1. label_name: 迴圈敘述...
2. label_name:
迴圈敘述
在定義的標籤名稱(label_name)後一定要加上冒號(:),之後才是接回圈的敘述句。
以下為JAVA程式碼。
01 OuterLoop://標籤名稱(迴圈的名字)
02 for( ; ; ){ //外層迴圈
03  InnerLoop:
04  for( ; ; ){ /內層迴圈
05   break InnerLoop;
06   //程式區塊...
07   continue InnerLoop;
08   //程式區塊...
09
10   break OuterLoop;
11   //程式區塊...
12   continue OuterLoop;
13   //程式區塊...
14  }
15 }
第5行執行break InnerLoop表是直接跳出InnerLoop迴圈,且繼續執行OuterLoop迴圈為完成的程序。第7行執行continue InnerLoop表示直接跳到InnerLoop迴圈的敘述,且執行InnerLoop迴圈未完成的程序。
  • 但是實際上不能直接這樣使用break、continue,例如:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
import java.util.*;
public class java_label {

  public static void main(String[] argc) {

    OuterLoop:
    for(int i=0 ;i<2 ; i++){
      InnerLoop:
      for(int j=0 ; j<10 ; j++){
        System.out.println('A');

  break OuterLoop;
        System.out.println('B');
        System.out.println('C');
        System.out.println('D');
      }
    }
  }
}
假設像這樣使用的話,由於break OuterLoop; 下方還有程式碼在,所以會出現Compiler Error:unreachable statement。所以想要使用這樣的方法,必須在break、continue前面加入條件判斷,或是放在迴圈最末端。
  • 配合判斷式使用,例如:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
import java.util.*;
public class java_label {

    public static void main(String[] argc) {

    OuterLoop:
    for(int i=0 ;i<2 ; i++){
        InnerLoop:
        for(int j=0 ; j<10 ; j++){
            System.out.println('A');
    if(j>=0)
     break OuterLoop;
            System.out.println('B');
            System.out.println('C');
            System.out.println('D');
          }
      }
  }
}
在break OuterLoop前方加入if(j>=0)加以判斷篩選,這樣就可以運作了。
第12行換成其他幾種方式,來比較輸出結果有何不同。
break OuterLoop;
Output:
A
continue OuterLoop;
Output:
A
A
break InnerLoop;
Output:
A
A
continue InnerLoop
Output:
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

本文章由 帳號:andy1989 發布於卡提諾論壇,網址:點我

沒有留言:

張貼留言