带有字符串错误输出的 Switch 语句
Switch statement with string wrong output
我遇到了这个基本问题,其中 switch case 与字符串一起使用。
break 语句不在 case 之间使用,但为什么即使它不匹配 case 字符串,它也会适用于所有 case?
所以我很想知道
为什么输出是 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);
}
您在 case "mon"
末尾没有 break;
,因此值也增加 2
你没想到的是,流程:
0 -1 -1 +1+2 +2 = 3
^ ^ ^ ^ ^
init sat sun mon wed
如下添加中断将导致输出 1
case "mon":
wd++;
break;
"sat" 和 "mon" 的案例末尾没有 break;
。
这意味着,当一个元素匹配 "sat" 和 "mon" case
时,它将执行该 case 中包含的代码,但随后会落入下一个 case。
到达break
时,跳出开关块。
这将停止在块内执行更多代码和案例测试。
在这种情况下。当它测试 "sat" 和 "mon" 时,它没有看到 break
,因此继续测试。
0 -1 0 2 4 3
^ ^ ^ ^ ^ ^
sun mon mon wed sat
我遇到了这个基本问题,其中 switch case 与字符串一起使用。
break 语句不在 case 之间使用,但为什么即使它不匹配 case 字符串,它也会适用于所有 case?
所以我很想知道 为什么输出是 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);
}
您在 case "mon"
末尾没有 break;
,因此值也增加 2
你没想到的是,流程:
0 -1 -1 +1+2 +2 = 3
^ ^ ^ ^ ^
init sat sun mon wed
如下添加中断将导致输出 1
case "mon":
wd++;
break;
"sat" 和 "mon" 的案例末尾没有 break;
。
这意味着,当一个元素匹配 "sat" 和 "mon" case
时,它将执行该 case 中包含的代码,但随后会落入下一个 case。
到达break
时,跳出开关块。
这将停止在块内执行更多代码和案例测试。
在这种情况下。当它测试 "sat" 和 "mon" 时,它没有看到 break
,因此继续测试。
0 -1 0 2 4 3
^ ^ ^ ^ ^ ^
sun mon mon wed sat