请阅读以下功能:
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
当i = 2
时,输出是什么?我认为它是4,但答案是10执行。为什么会这样?为什么案例3也会执行? i
是2,而不是3.我正在考虑这个但我仍然不知道为什么会这样。
答案 0 :(得分:11)
每个案例的switch语句都需要break;
,以避免执行后面的case语句。
答案 1 :(得分:1)
使用break
来避免下一个案例执行。
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
break;
case 2:
result = result + i * 2;
break;
case 3:
result = result + i * 3;
break;
}
default:
break;
return result;
}
答案 2 :(得分:1)
你忘记了` break; switch语句 完成后它应该看起来像这样:
case 1:
//code
break;
case 2:
//code
break;
包括一个defualt案件总是好的:
default:
System.err.println("Something went terribly wrong!");
对不起,如果以前发过这个,这应该可以解决所有问题 我还有一个原因至于为什么会发生这种情况: 结果从案例1中保存,并重新使用新值。这是你的错误。
答案 3 :(得分:0)
case语句需要一个break语句来阻止它进入下一个case语句。
拥有默认案例也很好
switch (i) {
case 1:
result = result + i;
break;
case 2:
result = result + i * 2;
break;
case 3:
result = result + i * 3;
break;
default:
log.error (...);
}
答案 4 :(得分:0)
使用“ break; ”来阻止代码自动进入下一个案例。
switch (choice)
{
case 0:
//codes
break;
case 1:
//codes
break;
case 2:
//codes
break;
case 3:
//codes
break;
}