让 switch case 执行之前的 case

Make a switch case execute previous cases

我的代码如下:

    switch(read.nextInt()){
        case 1:
            //do "a" and print the result
            break;
        case 2:
            //do "b" and print the result
            break;
        case 3:
            //do "a" and print the result
            //do "b" and print the result
    }

是否有另一种方法可以做到这一点而无需简单地复制案例 1 和案例 2 中的内容? 我刚开始毕业,所以我只能使用StringScanner,谢谢:)

定义两个方法 doA()doB() 并调用它们。这样您就不会重复您的代码。另外,您确定在每个 case 语句之后不需要 break 语句吗?

    switch(read.nextInt()){
        case 1:
            doA();
            break;
        case 2:
            doB();
            break;
        case 3:
            doA();
            doB();
            break;
        default:
            // do something
            break;
    }

在这种情况下,为

创建方法可能是有意义的
//do "a" and print the result

//do "b" and print the result

在情况 3 中,您只需一个接一个地调用这些方法。

一个棘手的问题,IMO 更具可读性:

int nextInt = read.nextInt();
if (nextInt % 2 == 1) { // or if (nextInt == 1 || nextInt == 3) {
  // do "a" and print the result
}
if (nextInt > 1) {
  // do "b" and print the result
}

看来您忘记了 'break'。它从 switch 语句生成代码 "break"。如果你想在 '1' 和 '2' 的情况下做同样的事情,而在 '3' 的情况下做另一件事,你可以写:

switch(read.nextInt()){
        case 1:
        case 2:
            //do "a" or "b" and print the result
            break; //break from switch statement, otherwise, the code below (yes, I mean "case 3") will be executed too
        case 3:
            //do "a" and print the result
            //do "b" and print the result
    }

如果您不想为多个值执行相同的代码块,通常会在 "case" 块的末尾添加 "break":

switch(n){
        case 1:
            //do something
            break;
        case 2:
            //do other things
            break;
        case 3:
            //more things!
            //you may not write "break" in the last "case" if you want
    }