2017-05-23 71 views
0

我試圖分析java代碼並查看它做了什麼,但在「中斷標籤」行中出現「未定義標籤」錯誤。從我的理解Java不像C#允許闖入當前範圍之外的範圍。這不正確嗎? 使用標籤中斷時java中出現「未定義標籤」錯誤

if (conditions) { 
    // some code 
    if (conditions) { 
    break label; 
    } 
    // some code 
} 

for (;;) { 
    if (conditions) { 
    // some code 
    } 
    // some code 
    break; 
    label: 
    // some code 
} 
+2

好悲傷。什麼可怕的代碼。如果它給出編譯器錯誤,它不會「做」任何事情,所以沒有必要分析它。 –

+0

@AndyTurner反編譯,我猜它是反編譯器的錯誤。 – Azilvl

+0

如果您的反編譯器生成不可編譯的代碼,它真的值得使用嗎? –

回答

4

在你的榜樣,你要使用break label;,就好像是類似於C/C++的語法goto label;。這不是它在Java中的工作原理。

在Java中,break label;語法僅適用於使用嵌套循環並且需要從內部循環跳轉到有問題的外部循環時。

例如:

outer: while(some condition) { 
    inner: while(another condition) { 
     innermost: while(yet another condition) { 
      if(breaking_condition) { 
       break inner; 
      } else if (one more breaking condition) { 
       break outer; 
      } 
     } 
    } 
} 

從甲骨文參見本教程:

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html


希望這有助於!

+1

所以java不允許跳到範圍之外的一條線? – Azilvl

+1

沒錯。它沒有 – anacron