Java中goto標簽的使用


編寫此文僅為以后可以復習。

最近在自學Java核心技術(很好的書,推薦!!),也是第一次從上面了解了goto,或許只是淺層了解。

錯誤之處希望大佬們給予批評與建議!!謝謝!!!

Java核心技術中就提到過:無限制的使用goto語句確實是導致錯誤的根源,但是有些情況下,偶爾使用goto 跳出循環 還是有益處的。

下面首先看一下不帶goto標簽的break語句:

while ( years <= 100 ){   balance += payment;   double interest = balance * interestRate / 100;   balance += interest;   if ( balance >= goal ) break;   years++;  } 

  

很簡單的break循環,在循環開始時,如果years > 100,或者在循環體中balance >= goal,則退出循環語句。

下面是帶goto標簽的break語句,請注意,標簽必須放在希望跳出的最外層循環之前,並且必須緊跟一個冒號,:

Scanner in = new Scanner(System.in);
int n;
read_data:
while(. . .) //這個循環語句用標簽加標簽
{
  . . .
  for (. . .) //這個內部循環沒有標記
  {
    System.out.print("Enter a number >= 0: ");
    n = in.nextInt();
    if(n < 0) //不應該發生-不能繼續
      break read_data;  
      //返回 read_data 循環
    . . .
  }
}
// 此語句在標記中斷后立即執行
if (n < 0) // 檢查不良情況
{
  // 處理不良情況
}
else
{
  // 進行正常加工
}

如果輸入有誤,通過執行帶標簽的break跳轉到帶標簽的語句塊末尾。對於任何使用break語句的代碼都要檢測循環是正常結束,還是由break跳出。

事實上,可以將標簽應用到任何語句中,甚至可以應用到if語句或者塊語句中,如下所示:

label:
{
    . . .
    if(condition) break label;// exits block
    . . .
}
//當中斷語句執行時跳轉到這里

因此,如果希望使用一條goto語句,並將一個標簽放在想要跳轉的語句塊之前,就可以使用break語句!當然,前面說過了Java語句中不提倡,大家了解就行。

另外,只能跳出語句塊,而不能跳入語句塊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM