我遇到了一个基本问题,即将开关大小写与字符串一起使用。
在案例之间不使用Break语句,但是为什么即使与案例字符串不匹配,它也会在所有案例中使用?
所以我很好奇 为什么输出3而不是1?
public static void main(String [] args)
{
int wd=0;
String days[]={"sun","mon","wed","sat"};
for(String s:days)
{
switch (s)
{
case "sat":
case "sun":
wd-=1;
break;
case "mon":
wd++;
case "wed":
wd+=2;
}
}
System.out.println(wd);
}
答案 0 :(得分:5)
break;
的末尾没有case "mon"
,因此值也增加了2
您没想到的流:
0 -1 -1 +1+2 +2 = 3
^ ^ ^ ^ ^
init sat sun mon wed
添加以下中断将导致输出为1
case "mon":
wd++;
break;
答案 1 :(得分:1)
“ sat”和“ mon”的个案末没有break;
。
这意味着,当元素与“ sat”和“ mon” case
相匹配时,它将执行该情况下包含的代码,但随后会进入下一个情况。
到达break
时,它会跳出切换块。
这将停止在该块内部执行更多代码和进行案例测试。
在这种情况下。当测试“ sat”和“ mon”时,它没有看到break
,因此继续测试。
0 -1 0 2 4 3
^ ^ ^ ^ ^ ^
sun mon mon wed sat