为什么默认情况总是在运行?
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);
}
}
预期输出应为
1
但实际输出:
1
默认
为什么会导致这个问题?任何人都可以帮助我
答案 0 :(得分:4)
您需要在所有切换分支中添加break
,否则您将体验到现在正在经历的内容,称为直通。
Java将依次从匹配的case开始执行所有语句,直到遇到switch或break语句为止。
在你的情况下,除了默认分支之外,它似乎实际上想要所有分支的落空。因此,您需要在STOP
案例的末尾添加一个中断。
这是正确的方法:
switch (state)
{
case INIT:
case START:
case STOP:
System.out.println("1");
break;
default:
System.out.println("default");
}
答案 1 :(得分:2)
将break;
语句添加到案例
答案 2 :(得分:0)
您需要在每个案例陈述的末尾添加break;
。