在switch-case中切换到默认情况

时间:2017-02-16 14:29:26

标签: java switch-statement default

在我遇到1/2 /等的情况下,是否可以转到默认情况?

switch(num) {
    case 1:
        if(foo) {
            //do something
        } else {
            //go to default
        }

        ...
        ...
        ...

    default:
        //do something
}

7 个答案:

答案 0 :(得分:9)

即使您在num时更改switch值,比较值也是之前变量值的值,如果您已输入其中一个case分支机构无法再次输入default

但是你可以做类似

的事情
boolean doDefault = false;
switch(num) {
    case 1:
        if(foo) {
            ...
        }
        else {
            doDefault = true;
        }
        break;
}

if(doDefault) {
    //do something
}

答案 1 :(得分:2)

您可以编写应该​​在函数的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;
}

请记住,如果案例不使用break;,则会调用其下方的所有案例(包括default)。这样,如果您只是突破开关if(foo),它将转到default。 这只是非常有用,如果您想从不超过一个default跳转到case,在这种情况下,您将case放在最后,default之前。< / p>

谨慎使用/请参阅以下评论

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();
}

答案 2 :(得分:1)

不可能,在实时应用程序或任何用例中没有意义,但是如果你想要进行默认操作,则可以通过以下任何方式执行此操作 -

  1. 删除所有休息时间,而不是最后的肉类。
  2. 调用goDefault()方法,其值与任何case不匹配。

答案 3 :(得分:1)

可以制作方法

switch(num) {
    case 1:
        if(foo) {
            //do something
        } else {
            foo();
        }
    default:
        foo();
    }

答案 4 :(得分:0)

不,你不能,但你可以调用相同的方法或省略休息。

答案 5 :(得分:0)

你可以把它们置于默认值之前并且不会在结束时制动,然后它会在中断之前执行所有语句,无论是什么情况

答案 6 :(得分:0)

您可以通过以下方式实现这一目标。

假设您需要在案例1,2,8之后转到默认情况,那么您可以在下面编写代码。

CreateParams