2017-05-23 33 views
0

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

、あなたはそれがC/C++でのgoto label;構文と類似していたかのようbreak label;を使用しようとしています。これはJavaでどのように動作するかではありません。

Javaの場合、break label;という構文は、ネストループを使用していて、内側のループから問題の外側のループの1つに脱出する必要がある場合にのみ適用できます。例えば

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; 
      } 
     } 
    } 
} 

は、Oracleからこのチュートリアルを参照してください:このことができます

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


願っています!

+1

Javaは結局スコープ外の行にジャンプすることを許さないのですか? – Azilvl

+1

そうです。それはしない – anacron

関連する問題