【发布时间】:2015-01-12 22:43:03
【问题描述】:
以下代码打印出1,2,3,如果我更改int i = 3;,它将打印出3。我想知道这背后的原因。我使用了调试器,似乎i = 3 转到案例 3 并打印出 3 然后程序终止。我相信当 i=5 转到 default 时,这是否意味着 case 1,case 2 and case 3 都属于 default条款?
int i = 5;
switch(i){
default:
case 1:
System.out.println(1);
case 2:
System.out.println(2);
case 3:
System.out.println(3);
}
编辑:
这个问题来自一个测试,它要求这个代码的输出。所以我想弄清楚为什么输出是1,2,3,我知道需要break;,但这不是我想要的答案。
【问题讨论】:
-
你需要
break;在每个case的末尾声明,否则执行将/* fall through */到它下面的case。 -
@rgettman 感谢您的提醒,但这不是我的问题,我离开了'break;'故意为这个问题而出的。
-
事实上,确实如此。
break语句的缺失完全解释了您的输出,以及为什么有些案例似乎“属于”其他案例。 -
那么请重新插入。
breaks 在这里是必不可少的。 -
“属于默认子句”并不是一个真正有意义的事情。事物不属于从句;只是
switch可以去的地方,default的情况是在开头。
标签: java switch-statement default