-4

これが私のコードです:

int x = 10;
switch(x) {
    case 10:
        System.out.println("10");
        break;
    case 5+5:
        System.out.println("5+5");
        break;
}

この場合、どちらの場合も真ですが、何が実行されますか? 最初のケース、または両方?

4

4 に答える 4

9

case無効です: 5+5 は 10 に解決され、同じ定数を持つ 2 つの句を持つことはできません。

于 2013-02-27T15:41:26.003 に答える
2

として5+5コンパイルされている10ため、コードには重複した条件が含まれています。これは、Java の switch ステートメントでは無効です。

仕様から:

switch ステートメントに関連付けられた case 定数式の 2 つが同じ値を持つことはできません。

したがって、誰も「実行を説明する」ことはできません。実行はありません。

于 2013-02-27T15:41:36.070 に答える
1

switch ブロック内の各 case ステートメントは一意である必要があります。case 10case 5 + 5は同じものであるため、コードはコンパイルされません。

于 2013-02-27T15:41:48.667 に答える
1

「重複ケース」エラーが発生します。

あなたのコメントによると、これはあなたが観察した問題です。

説明は、コンパイラによってコンパイル時に5+5評価されるということです。つまり、同じ値を持つ2つのケースブランチがあることを意味します。10これは許可されていません (コードはどれを取るべきですか?)

于 2013-02-27T15:41:35.153 に答える