Java开关 - 错过中断后执行的错误案例。为什么?

时间:2016-01-24 15:02:30

标签: java switch-statement

我在网上学习Java并且开始上课。为了愚弄,我会在特定情况(将被执行)之后删除其中一个中断。我曾想过它会检查下一个案例,看看条件是否为false,并在退出前跳到默认情况。相反,它执行了不正确的情况并在默认情况之前中断。

这里出了什么问题?

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

        char penaltyKick = 'R';

        switch (penaltyKick) {

            case 'L': System.out.println("Messi shoots to the left and scores!");
                                break; 
            case 'R': System.out.println("Messi shoots to the right and misses the goal!");

            case 'C': System.out.println("Messi shoots down the center, but the keeper blocks it!");
                                break;
            default:
                System.out.println("Messi is in position...");

        }

    }
}

编辑:忘了提。输出是:

Messi shoots to the right and misses the goal! 
Messi shoots down the center, but the keeper blocks it!

1 个答案:

答案 0 :(得分:5)

如果您遗失了break,执行将会转到下一个case,而不会再次检查条件。见here

  

break语句是必要的,因为没有它们,语句   in switch blocks fall through:匹配大小写后的所有语句   标签按顺序执行,无论表达式如何   后续案例标签,直到遇到break语句。