Java中的Switch语句在删除" break之后显示奇怪的输出;"

时间:2016-01-31 11:12:19

标签: java switch-statement

我已经创建了这段代码,但它的输出很奇怪。也许是因为我是Java的新手。我期望从此代码输出2 1 0但是当我在所有break语句之后删除case语句时,这个奇怪的输出会显示:2 1 2 0 1 2

有人可以解释为什么会这样吗?这是我的代码:

public class Sem2 {
    final static short x = 2;

    public static void main(String [] args) {
        for (int z=0; z < 3; z++) 
        {
            switch (z) 
            {
                case x: System.out.print("0 ");
                case x-1: System.out.print("1 ");
                case x-2: System.out.print("2 ");
            } 
        }
    }
}

2 个答案:

答案 0 :(得分:4)

如果没有break语句,它也将继续执行其他语句。通过使用break,在匹配的情况下退出开关盒。

答案 1 :(得分:2)

需要关键字break来突破switch语句的每种情况。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

  

...每个break语句都会终止封闭的switch语句。   控制流继续切换后的第一个语句   块。 break语句是必要的,因为没有它们,   switch块中的语句落在:所有语句之后   匹配的案例标签按顺序执行,无论如何   后续case标签的表达式,直到break语句为止   遇到