在Java语言中,在switch
语句中只能执行其中一种情况吗?我知道如果我执行break
,我会一直到switch
语句的末尾。
这就是我的意思。给定以下代码,在case 2上,我想执行case 2和case 1。在case 3上,我想执行case 3和case 1,但不是case 2。
switch(option) {
case 3: // code
// skip the next case, not break
case 2: // code
case 1: // code
}
发布于 2013-03-25 02:10:46
不,使用switch
语句不可能实现您想要的结果。您将遍历每个case
,直到命中break
。也许您希望case 1
位于switch
语句的外部,这样它就会被执行。
发布于 2013-03-25 02:10:26
将代码放入方法中并根据需要进行调用。按照您的示例进行操作:
void case1() {
// Whatever case 1 does
}
void case2() {
// Whatever case 2 does
}
void case3() {
// Whatever case 3 does
}
switch(option) {
case 3:
case3();
case1();
break;
case 2:
case2();
case1();
break;
case 1:
case1(); // You didn't specify what to do for case 1, so I assume you want case1()
break;
default:
// Always a good idea to have a default, just in case demons are summoned
}
当然case3()
,case2()
..。都是非常糟糕的方法名称,您应该重命名为更有意义的名称,以了解该方法的实际作用。
发布于 2013-03-25 02:23:40
我的建议是不要对anything使用fallthrough,除非出现以下情况:
switch (option) {
case 3:
doSomething();
break;
case 2:
case 1:
doSomeOtherThing();
break;
case 0:
// do nothing
break;
}
也就是说,为几种情况提供完全相同的相同的代码块来处理它们(通过“堆叠”case
标签),使这里的流程或多或少变得显而易见。我怀疑大多数程序员会直观地检查大小写错误(因为缩进让大小写看起来像是一个适当的块),或者是否能有效地读取依赖于它的代码-我知道我做不到。
https://stackoverflow.com/questions/15606572
复制相似问题