1

以下のコードでラベルが欠落しているとコンパイラが言う理由を誰か教えてください:

ケース1:

エラー:ラベルがありません

void crazyLoop() {
    int c = 0;
    JACK: while (c < 8) {
        JILL: System.out.println(c);
        if (c > 3)
            break JILL;
        else
            c++;
    }
}

ここでは、外部ではなく内部でJILL宣言しているため、到達可能です。JILLJACKJACK

ケース2:

エラー: c を解決できません。そして、私がこれを行うと:

void crazyLoop() {
    JILL:int c = 0;
    JACK: while (c < 8) {
         System.out.println(c);
        if (c > 3)
            break JILL;
        else
            c++;
    }
}

コンパイラはc、変数に解決できないと言います。

誰かが何が起こっているのか説明してもらえますか?

4

3 に答える 3

1

問題は にありJILL:int c = 0;ます。これは、Java の文法に従って無効であるためです。したがって、エラーc は変数に解決できませんは、最初のエラーの影響です。

ローカル変数宣言の前に label を使用することはできません。詳細については、この回答を参照してください。

于 2016-11-10T13:44:26.037 に答える