我只是在java代码中遇到了一些奇怪的东西:
switch (result) {
case 0:
result_amount = 500;
case 1:
result_amount = 600;
case -1:
result_amount = 700;
} result来自原始类型int。对于值,执行1、case 1和case -1。
这是正常的开关柜行为吗?如果是:为什么?
发布于 2015-08-12 16:11:56
您需要在case块之后使用break关键字:
switch (result) {
case 0:
result_amount = all_amounts[i];
break;
case 1:
result_amount = all_amounts[i];
break;
case -1:
result_amount = all_amounts[i+1];
} switch语句将跳转到正确的case标记,然后执行后面的所有代码,忽略其他可能的case标记。您可以将switch语句看作是goto语句。
发布于 2015-08-12 16:13:20
失败了。
break语句是必需的,因为如果没有它们,switch块中的语句将失败:匹配的case标签之后的所有语句都会按顺序执行,而不管后续case标签的表达式如何,直到遇到break语句。
您必须在每个案例之后添加break。
case 1:
result_amount = 600;
break; 发布于 2015-08-12 16:24:47
记住
这是几乎每个初学者都会犯的错误。这就是为什么我更喜欢C#的原因。它不允许“失败”。
您所做的错误是您漏掉了switch语句。尝试使用0作为result的值。它会检查所有的案例。当一个切换用例完成执行时,将执行下一个用例。这就是为什么我们需要为switch语句的每种情况添加一条break;语句。
switch (result) {
case 0:
result_amount = 500;
break;
case 1:
result_amount = 600;
break;
case -1:
result_amount = 700;
break;
} 但有时我们想要失败。例如,当我们想要计算一个月的天数时:
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 2:
days = 28;
case 4:
case 6:
//Lots of code...
}https://stackoverflow.com/questions/31959560
复制相似问题