为什么这段代码打印12而不是1? [重复]

问题描述 投票:-6回答:1

这个问题在这里已有答案:

class New{
    public static void main(String args[]){
        int x=1;
        switch(x){
            default : System.out.print("default");
            case 1 : System.out.print(1);
            case 2 : System.out.print(2); 
        }
    }
}

当我使用break关键字时,此代码正常工作。但我不知道为什么这不能正常工作。有人可以向我解释代码吗?

java switch-statement case
1个回答
2
投票

switch语句跳转到匹配的case,并继续从那里处理直到它看到break.由于该代码中没有breaks,它从case 1开始,输出1,然后继续case 2并输出2.虽然它很少见,有时这个“落到下一个case”是你真正想要的。但通常,你希望break阻止它。

如果你把它移到最后,它会说"default"

class New {
    public static void main(String args[]){
        int x=1;
        switch(x){
            case 1 : System.out.print(1);
            case 2 : System.out.print(2); 
            default : System.out.print("default");
        }
    }
}

输出

12default

同样,如果你将x设置为2,它将跳过case 1

class New {
    public static void main(String args[]){
        int x=2; // <===
        switch(x){
            case 1 : System.out.print(1);
            case 2 : System.out.print(2); 
            default : System.out.print("default");
        }
    }
}

输出

2default
© www.soinside.com 2019 - 2024. All rights reserved.