天天看點

Java中的break Label 和continue Label 例子

1:break

  break語句提供了一種友善的跳出循環的方法,一般隻退出一重循環。

  boolean test=true;

  int i=0;

  while(test){

   i++;

   if(i>=10) break;

  }

  執行這段程式時,盡管while條件表達式始終為真,全循環隻運作10次。

 2:标号label

  标号提供了一種簡單的break語句所不能實作的控制循環的方法,當在循環語句中碰到break時,不管其它控制變量,都會終止。但是,當你嵌套在幾層循環中想退出循環時又怎麼辦呢?break隻退出一重循環,但你可以用标号label标出你想退出哪一個語句。規定标号label必需放在循環之前(意味着循環必需緊跟着标号)

例子一:

char a;

System.out.println("請輸入一個字母");

outer: //System.out.println("請輸入一個字母");// 如果在這個地方列印語句的話,編譯時就會在下面藍色語句的地方報The label outer is missing,因為這樣會造成标号沒有放在循環之前

for (int i = 0; i < 10; i++) {

for (int j = 0; j < 10; j++) {

a = (char) System.in.read();

if (a == 'b')

break outer;

if (a == 'c')

continue outer;

}

}

  在這個例子中,循環從鍵盤接受100個輸入字元,輸入“b”字元時,break outer語句會結束兩重循環,注重continue outer語句,它告訴計算機退出現在的循環并繼續執行outer循環。

在Java中可以使用 break/continue 語句來控制多重嵌套循環的跳轉。

例子二:

label1: for (int i = 0; i < 10; i++) {

System.out.println("i = " + i);

for (int x = 0; x < 10; x++) {

System.out.println("x = " + x);

continue label1;

}

}

在這個例子中,我們使用continue label1中斷目前循環,繼續上層循環的執行。而如果使用break label1的話,則跳出所有label1後面的嵌套循環。類似的功能我們在C#中隻能用goto進行,Java雖然保留了goto關鍵詞,卻不允許使用 (goto為保留字)。需要注意的是Label和下面的循環語句間不能有其他代碼。

從設計角度來說是用Label、goto都不是好主意。