我理解Java switch case
是以这种方式设计的,但为什么这种行为在Java中
int x = 1;
switch(x){
case 1: System.out.println(1);
case 2: System.out.println(2);
case 3: System.out.println(3);
default: System.out.println("default");
}
output : 1
2
3
default
我的问题是为什么案例2和3被执行?我知道我省略了断言陈述
但是x
从来没有2或3,但case 2
和case 3
仍在执行?
答案 0 :(得分:4)
没有break语句所以所有情况都被执行
使用break语句
switch(x){
case 1: System.out.println(1);break;
case 2: System.out.println(2);break;
case 3: System.out.println(3);break;
default: System.out.println("default");
}
答案 1 :(得分:3)
我知道我省略了break语句,但x从不是2或3,而是案例2和 案例3仍然执行?
直接来自doc:
break语句是必要的,因为没有它们,语句就可以了 switch blocks fall through:匹配大小写后的所有语句 标签按顺序执行,无论表达式如何 后续案例标签,直到遇到break语句。
答案 2 :(得分:1)
您需要为每个案例添加break语句。由于没有中断声明,所有情况都会被执行。
答案 3 :(得分:0)
您错过了Break
声明。
switch(x){
case 1: System.out.println(1);
break;
case 2: System.out.println(2);
break;
case 3: System.out.println(3);
break;
default: System.out.println("default");
}
break语句是必要的,因为没有它们,语句就可以了 switch blocks fall through:匹配大小写后的所有语句 标签按顺序执行,无论表达式如何 后续案例标签,直到遇到break语句。