我遇到了这个基本问题,其中开关大小写与字符串一起使用。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); }
2 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
你没有 在末尾,所以值也递增 2break;case "mon"
这是你没想到的,流动:
0 -1 -1 +1+2 +2 = 3
^ ^ ^ ^ ^
init sat sun mon wed
添加如下中断将得到输出 1
case "mon":
wd++;
break;
UYOU
TA贡献1878条经验 获得超4个赞
在“sat”和“mon”的案例末尾没有。这意味着当一个元素匹配“sat”和“mon”时,它将执行该案例中包含的代码,但随后落入下一个案例。break;case
当到达 时,它会从开关块中断开。这将停止在块内执行更多的代码和用例测试。break
在这种情况下。当它测试“sat”和“mon”时,它看不到 ,因此继续测试。break
0 -1 0 2 4 3
^ ^ ^ ^ ^ ^
sun mon mon wed sat
添加回答
举报
0/150
提交
取消
