java开关语句机制
在下面的代码中,当我注释中断时,当我编写一个case(比如说“start”)时,它将打印下面所有的case输出,这意味着所有三行都已打印,当我编写“stop”时,它将打印两个输出“Mechine stopped”和“No command gived”,为什么在编译器搜索case时我需要给出break语句,如果匹配,则打印相关输出java开关语句机制,java,switch-statement,Java,Switch Statement,在下面的代码中,当我注释中断时,当我编写一个case(比如说“start”)时,它将打印下面所有的case输出,这意味着所有三行都已打印,当我编写“stop”时,它将打印两个输出“Mechine stopped”和“No command gived”,为什么在编译器搜索case时我需要给出break语句,如果匹配,则打印相关输出 import java.util.Scanner; public class App{ public static void main(Stri
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");
}
}
}
为什么在编译器搜索
案例,如果匹配,则打印相关输出
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
请参阅和注意:
如果其中一个case常量等于表达式的值,
然后我们说案例匹配,所有语句在
开关块中的匹配案例标签(如果有)在中执行
顺序
注意,这类似于C中的开关行为。发件人:
源于C语言的语言,更广泛地说是受C语言影响的语言
Fortran的计算GOTO,而不是特性fallthrough,其中
移动到匹配的大小写,然后继续执行
至“)中与下一个案例相关的陈述
源文本
另一个有趣的问题是break语句。每个break语句终止封闭的switch语句。控制流继续执行开关块后面的第一条语句break语句是必需的,因为如果没有它们,开关块中的语句就会失效:匹配大小写标签后的所有语句都会按顺序执行,而不管后续大小写标签的表达式如何,直到遇到break语句为止
在switch语句中未使用break时为直通逻辑 switch语句没有说“您需要包括break”。
最佳实践是,当您使用此逻辑时,应该添加注释//fall-through。旁注,一般来说,您希望在每种情况下进一步缩进代码,就像它们被大括号包围一样