文章目录
- 1. switch
- 1.1 基本语法
- 1.2 流程图
- 1.3 快速入门
- 1.4 switch使用细节
- 1.5 练习
- 1.6 switch和if的比较
1. switch
1.1 基本语法
【6点注意】
- switch 关键字,表示swtich分支
- 表达式(一定会有个值返回)
- case 常量1:当表达式的值等于常量1,就执行 语句块1
- break :表示退出swtich
- 如果和 case 常量1 匹配,就执行语句块1,如果没有匹配,就继续匹配case常量2。
- 如果一个都没有匹配上,就执行default。
1.2 流程图
没有break就穿透执行语句块2。
1.3 快速入门
- 请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
- a 表示星期一,b 表示星期二 …
- 根据用户的输入显示相应的信息.要求使用 switch 语句完成。
public class var01 {//编写一个main方法public static void main(String[] args) {//思路分析//1. 接收一个字符,创建Scanner对象//2. 使用switch来完成匹配,并输出对应的信息。import java.util.Scanner;Scanner myScanner = new Scanner(System.in);System.out.println("请输入一个字符(a-g)");char c1 = myScanner.next().cahrAt(0);//在java中只要有值返回就是一个表达式。switch(c1) {case 'a':System.out.println("今天星期一");break;case 'b':System.out.println("今天星期二");break;case 'c':System.out.println("今天星期三");break;case 'd':System.out.println("今天星期四");break;case 'e':System.out.println("今天星期五");break;case 'f':System.out.println("今天星期六");break;case 'g':System.out.println("今天星期七");break;default:System.out.println("输入错误,没有匹配");}System.out.println("退出switch,继续执行程序。")}
}
1.4 switch使用细节
- 表达式数据类型,应和case 后的常量类型一致,或者可以自动转成可以相互比较的类型,比如輸入的是字符,而常量是 int。
- switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum枚举,String)。
- case子句中的值必须是常量 / 常量表达式,而不能是变量。
- default子句是可选的(可以不写default),当没有匹配的case时,执行default。【无default&无匹配,则没有任何输出】
- brealk语句用来在执行完一个case分支后使程序跳出switch语句块。如果没有break,程序会顺序执行到switch结尾,除非遇到break(穿透)。
1.5 练习
- 使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 “other”。
public class var01 {//编写一个main方法public static void main(String[] args) {//第一题import java.util.Scanner;Scanner myScanner = new Scanner(System.in);System.out.println("请输入a-e");char c1 = myScanner.next().cahrAt(0);//在java中只要有值返回就是一个表达式。switch(c1) {case 'a':System.out.println("A");break;case 'b':System.out.println("B");break;case 'c':System.out.println("C");break;case 'd':System.out.println("D");break;case 'e':System.out.println("E");break;default:System.out.println("other")}}
}
- 对学生成绩大于60分的,输出"合格"。低于60分的,输出"不合格"。(注:输入的成绩不能大于100),提示成绩/60
public class var01 {//编写一个main方法public static void main(String[] args) {//第2题//思路分析://1. 成绩在【60,100】,(int)(成绩/60)=1// 成绩在【0,60),(int)(成绩/60)=0//2. 用if语句,只有成绩在【0,100】才执行switch。double score = 88.0;if(score >= 0 && score <= 100) {switch((int)(score / 60)) {case 0:System.out.println("不及格");break;case 1:System.out.println("及格");break;}} else {System.out.println("输入错误")}}
}
- 根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示 使用穿透 ]
public class var01 {//编写一个main方法public static void main(String[] args) {//第3题//思路分析://1. 创建Scanner对象,接收用户输入//2. 使用int month接收。//3. 使用switch匹配,使用穿透,笔记哦啊简洁import java.util.Scanner;Scanner myScanner = new Scanner(System.in);System.out.println("请输入月份");int month = myScanner.nextInt();switch(month) {case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;case 12:case 1:case 2:System.out.println("冬季");break;default:System,out.println("输入错误,请输入1-12")}}
}
1.6 switch和if的比较
- 如果判断的具体数值不多,而且符合byte、short、int、char,enum[枚举],String这6种类型。虽然两个语句都可 以使用,建议使用 swtich 语句。
- 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。