This question already has answers here:
Switch without break
                                
                                    (6个答案)
                                
                        
                        
                            Why do we need break after case statements?
                                
                                    (17个答案)
                                
                        
                3年前关闭。
            
        

在下面的代码中,当我注释中断时,当我编写一个案例(例如“开始”)时,它将打印下面的所有案例输出,意味着将打印所有三行,而当我编写“停止”时,它将打印两个输出“ Mechine” “停止”和“未给出命令”,为什么在编译器搜索大小写时需要给出break语句,如果匹配则打印相关输出。

    import java.util.Scanner;
    public class App{
    public static void main(String args[]){
    Scanner input = new Scanner(System.in);
    String text = input.nextLine();
    switch(text){
        case "start":
        System.out.println("Mechine Started");
        break;
        case "stop":
        System.out.println("Mechine stopped");
        break;
        default:
        System.out.println("No command given");


            }
        }
    }

最佳答案

为什么在编译器搜索时需要给出break语句
  情况下,如果匹配,则打印相关输出。


因为这就是它的定义工作方式。除非您明确break,否则您的程序将遇到其余的case子句

请参见JLS section 14.11并注意:


  如果大小写常数之一等于表达式的值,
  那么我们说大小写匹配,并且
  开关块中匹配的案例标签(如果有)在以下位置执行
  顺序。


请注意,它类似于C中的切换行为。从Wikipedia


  源自C的语言,更一般地说,受C影响的语言
  Fortran计算出的GOTO,而是功能下降,其中控制
  移至相符的案例,然后继续执行(“
  通过”)中与下一种情况相关的语句
  源文本

关于java - java switch语句机制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37418936/

10-13 09:41