我对switch语句的理解有什么问题?

时间:2014-10-18 18:28:22

标签: java

从逻辑上讲,我认为答案应为0.打印输出为2。

public class Switch{
public static void main(String[] args){

int x = 3; int y = 4;

  switch (x + 3) {
    case 6: y = 0;
    case 7: y = 1; 
    default: y += 1;
   }
System.out.print(y);
}
}

这就是我认为代码应该运行的方式:

1)添加x + 3.答案是6.

2)案例6与答案6相关。这导致0为6的新值。

3)我们忽略案例7和默认情况,因为案例6符合需要。

4)系统打印出y的新值,即0。

这是我错的地方,因为打印出2。我的想法在哪里错了,我对转换语句的理解中缺少什么?

2 个答案:

答案 0 :(得分:3)

一旦选择了Switch语句中的Case,代码就会从那里直接执行,这意味着它执行所有的情况。如果您不想这样,请使用Break语句:

switch (x + 3) {
    case 6: y = 0; break;
    case 7: y = 1; break;
    default: y += 1; break;
   }

答案 1 :(得分:1)

在一个switch中,你“落入”案件,从匹配的案件开始。在这里,您输入case 6,然后case 7,然后default。使用break关键字可以阻止此行为:

switch (x + 3) {
    case 6: 
        y = 0;
        break;
    case 7:
        y = 1; 
        break;
    default:
        y += 1;
        break;
}