默认情况下总是在菜单切换中运行

Ale*_*Lee -2 java switch-statement

为什么默认情况总是运行?

public class HelloWorld {
    public enum ScenarioState {
        INIT,
        START,
        STOP,
        DESTROY
    }

    public static void displayRecord(ScenarioState state) {
        switch (state) {
            case INIT:
            case START:
            case STOP:
                System.out.println("1");
            default:
                System.out.println("default");
        }
    }

    public static void main(String[] args) {
        ScenarioState state = ScenarioState.INIT;
        displayRecord(state);
    }
}
Run Code Online (Sandbox Code Playgroud)

预期输出应该是

1

但实际输出:

1
默认

为什么会造成这个问题呢?任何人都可以帮助我

Ben*_*Ben 5

您需要break在所有 switch 分支中添加 a ,否则您将遇到现在所经历的情况,称为失败

Java 将从匹配的 case 开始依次执行所有语句,直到遇到 switch 或 break 语句的末尾。

在您的情况下,似乎实际上希望除默认分支之外的所有分支都失败。因此,您需要在案例末尾添加一个中断STOP

这将是正确的方法:

switch (state)
{
    case INIT:
    case START:
    case STOP:
        System.out.println("1");
        break;
    default:
        System.out.println("default");
}
Run Code Online (Sandbox Code Playgroud)

  • 我投了反对票,因为OP显然希望在打开“INIT”时打印出“1”。你的答案不再允许 (3认同)