java - 带有字符串错误输出的 switch 语句
问题描述
我遇到了这个基本问题,其中 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);
}
解决方案
你没有 abreak;
在最后case "mon"
所以值也增加了 2
你没想到的,流程:
0 -1 -1 +1+2 +2 = 3
^ ^ ^ ^ ^
init sat sun mon wed
如下添加中断将导致输出 1
case "mon":
wd++;
break;
推荐阅读
- python - REINDEX DATABASE 不能在事务块内运行
- ios - 如何知道用户来到 iOS 中的特定位置?[既不是在背景中也不是在前景中]
- google-bigquery - BigQuery:语法错误:意外的关键字 LEFT
- data-structures - 页面对齐条目的数据结构
- c# - 我可以从包含图像 URL 的 QR 码显示图像吗?
- python - Keras 自定义回调:网格点训练终止条件
- android - android中的Dropbox核心API
- python - Python Discord在命令后获取多条消息
- python - 无法使用 urllib.request.urlretrieve 打开保存的 excel 文件(提到的示例链接)
- modeling - OpenModelica 错误:可扩展连接器阵列 - 超定系统