非常に単純な質問ですが、これを理解することはできません。以下の (Java) コードで y が 2 になるのはなぜですか?
int x = 2;
int y = 2;
switch (x * 2) {
case 4: y += 1;
case 6: y -= 2;
default: y += 1;
}
非常に単純な質問ですが、これを理解することはできません。以下の (Java) コードで y が 2 になるのはなぜですか?
int x = 2;
int y = 2;
switch (x * 2) {
case 4: y += 1;
case 6: y -= 2;
default: y += 1;
}
ケース 4 からケース 6、そしてデフォルトにフォールスルーするため、増分 (新しい値: 3) し、2 だけ減分 (新しい値: 1) してから増分 (新しい値: 2) します。
コンパイラは、少なくとも-Xlint
. -Xlint
コンパイラの警告を無視しないでください。常に:)でコンパイルしてください。
追加するのを忘れましたbreak
:
int x = 2;
int y = 2;
switch (x * 2) {
case 4:
y += 1;
break;
case 6:
y -= 2;
break;
default: y += 1;
}
ケースの後にブレークを追加しませんでした。したがって、すべてのステートメントを実行します。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 になります
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;
}