web-dev-qa-db-ja.com

ブレークしてラベルを付け、「ラベルMyLabelがありません」

私はこのようなコードを持っています:

if(condition1)
{
    break MyLabel;
}
while(true)
{
    //some code here
    MyLabel: if(condition2) break;
    //more code here
}

そして私はこのエラーを受け取ります:

ラベルMyLabelがありません。

どうしましたか?

14
Lrrr

テキストで囲むステートメントにあるラベルにのみブレークできます。あなたの例では、ラベルはbreakステートメントを囲むステートメントにはありません。

(価値があるのは、gotoをサポートする高水準言語でさえ、外部からループの途中にジャンプすることを許可しないことです。私はC ...や次のような古い言語を考えています。 FORTRAN。)

Javaはあなたが脱出することを可能にします、しかし侵入は違法です...そしてあなたを逮捕するでしょう:-)

(申し訳ありませんが、私はそれに抵抗できませんでした。冗談を言わない人にとって、「侵入」とは誰かがあなたの家に入って物を盗むことです 「侵入して入る」 を参照してください。 。)

47
Stephen C

あなたできませんそのようにラベルをgotoとして使用します一般方法。
より高いレベルのネストされたコードに移動する場合は、ラベルを使用します。

例えば

l1: while
 l2: while
  l3: while
   break l1
   l4: while
8
Farmor