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
默认
为什么会造成这个问题呢?任何人都可以帮助我
您需要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)
归档时间: |
|
查看次数: |
2371 次 |
最近记录: |