在处理多个选项时,使用if/else结构显得有些笨拙。
Scanner in = new Scanner(System.in);
System.out.println("Select an option (1, 2, 3, 4)");
int choice = in.nextInt();
switch(choice){
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
case 4:
System.out.println(4);
break;
default:
System.out.println("输入有误");
break;
}
switch语句将从与选项值相匹配的case标签处开始执行直到遇到break语句,或者执行到switch语句的结束处为止。如果没有相匹配的case标签,而有default子句,就执行这个子句。
警告:有可能触发多个case分支。如果在case分支语句的末尾没有break语句,那么就会接着执行下一个case分支语句。
case标签可以是:
- 类型为 char、byte、short、或 int 的常量表达式
- 枚举常量
- 从 Java SE 7开始,case 标签还可以是字符串字面量。
当在switch语句中使用枚举常量时,不必在每个标签中指明枚举名,可以由switch的表达式确定。例如:
enum Size{SMALL, MEDIUM, LARGE, EXTRA_LARGE};
public static void main(String[] args){
Size choice = Size.MEDIUM;
switch(choice){
case SMALL:
System.out.println(1);
break;
case MEDIUM:
System.out.println(2);
break;
case LARGE:
System.out.println(3);
break;
case EXTRA_LARGE:
System.out.println(4);
break;
default:
System.out.println("输入有误");
break;
}
}