我遇到了这个基本问题,其中switch case与字符串一起使用。
在案例之间没有使用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);
}
你在break;
的末尾没有case "mon"
所以值也增加2
你没想到的,流程:
0 -1 -1 +1+2 +2 = 3
^ ^ ^ ^ ^
init sat sun mon wed
输出1将导致如下添加中断
case "mon":
wd++;
break;
在“sat”和“mon”的案例结尾没有break;
。这意味着当一个元素匹配“sat”和“mon”case
时,它将执行该情况中包含的代码,但后来属于下一个案例。
当达到break
时,它会从开关块中断开。这将阻止在块内执行更多代码和案例测试。
在这种情况下。当它测试“sat”和“mon”时,它没有看到break
,因此继续测试。
0 -1 0 2 4 3
^ ^ ^ ^ ^ ^
sun mon mon wed sat