是否有可能转到默认情况下,而我在案例1/2 /等?切换到默认情况下切换案例
switch(num) {
case 1:
if(foo) {
//do something
} else {
//go to default
}
...
...
...
default:
//do something
}
是否有可能转到默认情况下,而我在案例1/2 /等?切换到默认情况下切换案例
switch(num) {
case 1:
if(foo) {
//do something
} else {
//go to default
}
...
...
...
default:
//do something
}
即使更改num
值,当你在switch
对于比较值启动开关的前可变的值,所以如果你已经进入case
的一个分支,你不能再进入default
。
但是你可以这样做
boolean doDefault = false;
switch(num) {
case 1:
if(foo) {
...
}
else {
doDefault = true;
}
break;
}
if(doDefault) {
//do something
}
不可能的,不会使实时的应用程序或任何使用情况下的意义,但是如果你想通过以下任一way-
case
都不匹配。,你不行,但你可以调用相同的方法或离开了休息。
你可以把它们违约前也不要在制动的情况下结束,那么它会执行所有语句休息前,不管是什么情况
你可以写是应该发生的逻辑在功能的default
块,并调用它在必要时:
void defAction(){
printf("Hello, World!\n");
}
int main() {
int num = 1, foo = 0;
switch(num) {
case 1:
if(foo) {
printf("Goodbye, World!\n");
} else {
defAction();
}
break;
default:
defAction();
}
return 0;
}
请记住,如果情况不使用它下面(包括default
)break;
,所有的情况下也被称为。这样,如果你只打破了开关if(foo)
,它将进入default
。 这只是非常有用,如果你想跳到default
从不多于一个case
,在这种情况下,你把case
最后,在default
之前。
使用/见下文
switch(num) {
case 2:
// do sth
break;
case 3:
// do sth
break;
case 4:
// do sth
break;
case 1:
if(foo) {
printf("Goodbye, World!\n");
break;
}
// ELSE don't break, use default
default:
defAction();
}
后者是丑陋的,将被大多数未来的程序员触摸代码误读。它至少需要用大写字母发表评论,以警告读者。 –
@ OleV.V。你是对的!我个人对这样的解决方案没有问题,但其他人可能。我相应地编辑了我的答案...... – Barthy
评论这有可能使一个方法
switch(num) {
case 1:
if(foo) {
//do something
} else {
foo();
}
default:
foo();
}
您在下面的方式实现这一目标。
假设你需要转到案例1,2,8后的默认情况,那么你可以写下面的代码。
switch(Choice){
case 1 : //do something
case 2 : //do something
case 8 : //do something
default: //to do default operation
break;
case 3 :
case 4 :
}
但是,如果他/她需要按照您的建议方式离开案例1,则案例2和案例8也将被执行。这可能不是他/她想要的。 – Barthy
是的,但是如果情况2和8的块是空的,这是有用的。 –
不,Java不支持'goto'开关箱的功能。 – khelwood
这将是可怕的。只需创建一个方法doDefault(),并从默认情况下和案例1的else分支中调用它。 –
糟糕吗? C#有这个。 – Joe