switch分支结构
- 基本语法
switch (表达式){
case 常量1: //当...
语句块1;
break; //跳出switch
case 常量2:
语句块2;
break;
...
case 常量n;
语句块n;
break;
default:
default语句块;
break;
}
- switch 关键字, 表示switch分支
- 表达式, 对应一个值
- case 常量1: 当表达式的值等于常量1, 就执行 语句块1
- break: 表示退出switch
- 如果和case常量1匹配, 就执行语句块1, 如果没有匹配, 就继续匹配case 常量2
- 如果一个都没有匹配上, 执行default
switch分支结构
- 流程图
- 快速入门
案例:
- 请写一个程序, 该程序可以接收一个字符, 比如: a, b, c, d, e, f, g
- a表示星期一, b表示星期2…
- 根据用户的输入显示相应的信息, 要求使用switch语句
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符(a-g)");
char c1 = input.next().charAt(0); //
//在java中, 只要是有值返回, 就是一个表达式
switch(c1) {
case 'a':
System.out.println("今天星期一");
break;
case 'b':
System.out.println("今天星期二");
break;
case 'c':
System.out.println("今天星期三");
break;
// ...
default:
System.out.println("输入有误");
break;
}
switch注意事项和细节讨论
- 表达式数据类型, 应和case 后的常量类型一致,或着是可以 自动转成 可以相互比较的类型, 比如输入的是字符, 而常量是int
- switch(表达式)中表达式的返回值必须是: (byte, short,int,char,enum,String)
double c = 1.1;
switch (c){ //错误
case 1.1 : //错误
System.out.println("ko");
break;
}
- case子句中的值必须是常量, 而不能是变量
- default子句是可选的, 当没有匹配的case时, 执行default
- break语句用来在执行完一个case分支后使程序跳出switch语句块; 如果没有写break, 程序会顺利执行到switch结尾.
案例练习
- 使用 switch 把小写类型的 char型转为大写(键盘输入)。只转换 a, b,c, d, e.其它的输出"other
// 创建Scanner对象
Scanner input = new Scanner(System.in);
System.out.println("请输入 a~e:");
char c1 = input.next().charAt(0);
switch (c1) {
case 'a':
c1 = 'A';
System.out.println(c1);
break;
case 'b':
c1 = 'B';
System.out.println(c1);
break;
case 'c':
c1 = 'C';
System.out.println(c1);
break;
case 'd':
c1 = 'D';
System.out.println(c1);
break;
case 'e':
c1 = 'E';
System.out.println(c1);
break;
default:
System.out.println("other");
break;
}
小伙伴做剩下的题吧
-
对学生成绩大于60分的,输出"合格”。低于60分的,输出"不合格”。(注:输入。的成绩不能大于100),提示 成绩/60
-
根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11秋季 12,1,2 冬季[练习,提示 使用穿透 ]
switch和if的比较
-
如果判断的具体数值不多, 而且符合byte, short, int, char, enum[枚举], String这6种类型, 虽然两个语句都可以使用, 建议使用switch语句
-
其他情况: 对区间判断, 对结果为boolean类型判断, 使用if, if的范围更广