是否有可能轉到默認情況下,而我在案例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