1.1 switch语法规则
-
表达式expr的值必须是下述几种类型之一:
byte、short、int、char、enum(枚举);java7之后可以是String。
-
case子句中的值const 必须是常量值(或final的变量),case中的值不能是一个范围
-
所有case子句中的值应是不同的,否则会编译出错;
-
default子句是可选的(不是必须的)
-
break语句用来在执行完一个case分支后使程序跳出switch语句块;否则会继续执行下去
1.2语法格式
switch(a){ // a = 2
// 情况
case 1:
statement1;
break;
case 2:
statement2;
break;
… …
case constN:
statementN;
break;
default:
statement_dafault;
break;
}
1.3 执行顺序:
1 所有的 case 都不满足需求的时候 执行default中的内容
2 break 帮助跳出switch 语句, 如果执行过程中 没有遇到break 继续向下执行直到遇到break为止
1.4 练习:
练习一: 简单实现switch语句
int i = 1;
switch(i){
case 1:
System.out.println("Hello World!");
break;
case 2:
System.out.println("Hello World!2");
case 3:
System.out.println("Hello World3");
break;
default:
System.out.println("Haaaa");
break;
}
练习二: 判断 春夏秋冬
Scanner sc = new Scanner(System.in);
String str = sc.next();
switch(str){
case "春天":
System.out.println("春暖花开");
break;
case "夏天":
System.out.println("闷热");
break;
case "秋天":
System.out.println("秋高气爽");
break;
case "冬天":
System.out.println("滴水成冰");
break;
default:
System.out.println("火星的");
break;
}
练习三: 需求: 利用switch实现一个计算器操作
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个操作数:");
int a = sc.nextInt();
System.out.println("请输入运算符");
String str = sc.next();
System.out.println("请输入第二个操作:");
int b = sc.nextInt();
switch(str){
case "+":
System.out.println(a+"+"+b+"="+(a+b));
break;
case "-":
System.out.println(a+"-"+b+"="+(a-b));
break;
case "*":
System.out.println(a+""+b+"="+(ab));
break;
case "/":
System.out.println(a+"/"+b+"="+(a/b));
break;
case "%":
System.out.println(a+"%"+b+"="+(a%b));
break;
}
1.5 特殊用法 :case穿透
case穿透: 产生这种现象的原因:由于某个case语句中缺少或者漏写break语句所导致的结果.
// 需求: 打印输出指定的月份的天数
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("31天");
break;
case 2:
System.out.println("28天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("30天");
break;
}
System.out.println("Hello World!");
}