6

非常に単純な質問ですが、これを理解することはできません。以下の (Java) コードで y が 2 になるのはなぜですか?

int x = 2;
int y = 2;
switch (x * 2) {
    case 4: y += 1;
    case 6: y -= 2;
    default: y += 1;
}
4

4 に答える 4

5

ケース 4 からケース 6、そしてデフォルトにフォールスルーするため、増分 (新しい値: 3) し、2 だけ減分 (新しい値: 1) してから増分 (新しい値: 2) します。

コンパイラは、少なくとも-Xlint. -Xlintコンパイラの警告を無視しないでください。常に:)でコンパイルしてください。

于 2012-09-21T18:56:35.743 に答える
3

追加するのを忘れましたbreak:

int x = 2;
int y = 2;
switch (x * 2) {
    case 4: 
        y += 1;
        break;
    case 6:
        y -= 2;
        break;
    default: y += 1;
}
于 2012-09-21T18:57:52.407 に答える
2

ケースの後にブレークを追加しませんでした。したがって、すべてのステートメントを実行します。y=y+1-2+1; 2

Switch ステートメントは -

int x = 2;
int y = 2;
switch (x * 2) {
    case 4: y += 1;break;
    case 6: y -= 2;break;
    default: y += 1;
}

その場合、y は 3 になります

于 2012-09-21T18:57:09.840 に答える
1

switch ステートメントでは、ステートメントを追加しない限り、最初に一致したケースより下のすべてのケースが実行されますbreak;

y が期待される1場合は、次のことを行う必要があります。

int x = 2; 
int y = 2;  
switch (x * 2){  
case 4: y += 1; 
break;
case 6: y -= 2; 
break;
default: y += 1; 
} 
于 2012-09-21T19:01:07.743 に答える