switch分支结构
- 基本语法
switch (表达式){case 常量1: //当...语句块1;break; //跳出switchcase 常量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的范围更广