我有一个案例来研究它,我有一个问题让我对 Switch 语句感到困惑,我只需要理解为什么我不需要这段代码的解决方案。
此开关比较数组的值
它执行切换,然后转到与当前值相同的情况之一, 但这个案例是空的,没有中断,也没有代码 因此它会跳转并执行下一个与当前情况具有不同值的情况的代码。
如果我包含一个中断,它会正常工作并且不会执行下一个案例代码,但我需要理解为什么它以错误值执行下一个案例。
public class HelloWorld{
public static void main(String []args){
int wd=0;
String days[]={"sun","mon","wed","sat"};
for(String s:days){
switch(s){
// current value is sat it will execute case "sun"
case "sat":
case "sun":
/*
*after going through all array values it will execute this value's code
*when the current value is sat
*/
wd -= 1;
break;
case "mon":
wd -= 1;
break;
case "wed":
wd+=2;
}
}
System.out.print(wd);
}
}
我预计输出为 0,因为 wd=-1-1+2=0 实际 = -1,因为它再次执行案例“sun”
最佳答案
switch
案例失败 - 执行开始,标签匹配并继续,直到案例的执行终止,通常带有 break
(尽管 return
,在异常结束时抛出异常或任何其他形式也可以解决问题)。
您可以在Java's tuturoial中阅读有关此行为的更多信息。 .
关于java - 为什么 Switch 会跳过一种情况并针对不同情况执行具有错误值的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56831201/