java switch case语句是否为负int值执行多个case?
我只是在java代码中遇到了一些奇怪的东西:java switch case语句是否为负int值执行多个case?,java,int,switch-statement,Java,Int,Switch Statement,我只是在java代码中遇到了一些奇怪的东西: switch (result) { case 0: result_amount = 500; case 1: result_amount = 600; case -1: result_amount = 700; } 结果来自基本类型int。 对于值1,执行案例1和案例-1
switch (result) {
case 0:
result_amount = 500;
case 1:
result_amount = 600;
case -1:
result_amount = 700;
}
结果
来自基本类型int。
对于值1
,执行案例1
和案例-1
这是正常的开关箱行为吗?如果是:为什么?您需要在
案例
块后使用中断
关键字:
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
标记。你可以考虑<代码>开关>代码>语句,就像<代码> Goto 一个。 < P>没有<代码>破解< /Cord>语句,将执行下一个案例。 < P> <强>
break语句是必需的,因为如果没有它们,开关块中的语句就会失效:匹配的case标签之后的所有语句都会按顺序执行,而不管后续case标签的表达式如何,直到遇到break语句为止
您必须在每个案例后添加中断
case 1:
result_amount = 600;
break;
switch (result) {
case 0:
result_amount = all_amounts[i];
case 1:
result_amount = all_amounts[i];
case -1:
result_amount = all_amounts[i+1];
}
为了避免它,你必须把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];
break;
}
现在只执行匹配的大小写。记住: 这是一个几乎每个初学者都会犯的错误。这就是为什么我更喜欢C#more。它不允许“失败” 你做错了的是你没有通过switch语句。尝试使用0作为
结果的值
。它将贯穿所有案例。当一个开关案例完成执行时,将执行下一个案例。这就是为什么我们需要添加一个break代码>语句,用于switch语句的每种情况
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...
}
您应该包括break和default,以便以正确的方式运行程序。让我给你举个例子
switch (result) {
case 0:
result_amount = 500;
break;
case 1:
result_amount = 600;
break;
case -1:
result_amount = 700;
break;
}
从我的观点来看,您也应该始终在switch case的末尾声明default。但是为什么要将其放入'-1'的case中呢。“1”与开关盒的“-1”相同吗?因为您没有包含中断代码>语句,因为执行流经过case1
和case1
,因为它们之间没有break
。