1.1 语法
代码块00 int key = 0; // key的类型可以是byte、short、int、char、String、枚举 switch(key){ case value01: 代码块01; break; case value02: 代码块02; break; case value03: 代码块03; break; ... ... default: 代码块N break; } 代码块N+1 执行流程: 1、执行代码块00 2、执行switch中key数值的判定 如果key==value01,执行代码块01,执行break,switch结束 如果key!=value01,key==value02,执行代码块02,执行break,switch结束 如果key!=value01,key!=value02,key==value03,执行代码块0,3,执行break,switch结束 ... ... 如果key和任何value都不相同,执行default中的代码块N,执行break,switch结束 3、执行代码N+1
1.2 入门案例
package com.shine.switch666; public class Demo01 { public static void main(String[] args) { /** * switch入门使用 */ int level = 4; // 需要判定的变量 switch(level) { // 变量可能出现的数值 case 0: // 如果level == 0,执行此处的代码 System.out.println("当前风扇档位是0,静止状态"); // 代码执行结束,手动终止switch break; case 1: System.out.println("当前风扇档位是1,转速500r/min"); break; case 2: System.out.println("当前风扇档位是2,转速1000r/min"); break; case 3: System.out.println("当前风扇档位是3,转速1500r/min"); break; // 如果变量和case的数据都不匹配,执行default default: System.out.println("风扇程序出现错误"); break; } System.out.println("OVER"); } }
1.3 练习题
星期N和课程表
package com.shine.switch666; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { // 星期N和课程表 /** * 代码思路: * 1、创建扫描器 * 2、提示输入星期N * 3、获取输入的数据 * 4、使用switch判定 * 5、结束 */ // 创建扫描器 Scanner sc = new Scanner(System.in); // 提示输入并获取星期N System.out.println("请输入查询星期几的课程【1~7】:"); int day = sc.nextInt(); // 使用switch判定 switch (day) { case 1: System.out.println("星期一,语文数学"); break; case 2: System.out.println("星期2,语文数学"); break; case 3: System.out.println("星期3,语文数学"); break; case 4: System.out.println("星期4,语文数学"); break; case 5: System.out.println("星期5,语文数学"); break; case 6: System.out.println("星期6,语文数学"); break; case 7: System.out.println("星期7,语文数学"); break; default: System.out.println("您的输入有误。。。"); break; } System.out.println("OVER"); } }
月份和季节V1.0
package com.shine.switch666; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { /** * 键盘录入月份,判定季节 */ /** * 代码思路: * 1、创建Scanner扫描器 * 2、提示输入月份 * 3、获取输入的月份 * 4、使用switch进行判定 * 5、结束 */ // 创建扫描器 Scanner sc = new Scanner(System.in); // 提示输入并获取月份 System.out.println("请输入月份[1~12]:"); int month = sc.nextInt(); // 使用switch判定 switch (month) { case 1: System.out.println("冬季"); break; case 2: System.out.println("冬季"); break; case 12: System.out.println("冬季"); break; case 3: System.out.println("春季"); break; case 4: System.out.println("春季"); break; case 5: System.out.println("春季"); break; case 6: System.out.println("夏季"); break; case 7: System.out.println("夏季"); break; case 8: System.out.println("夏季"); break; case 9: System.out.println("秋季"); break; case 10: System.out.println("秋季"); break; case 11: System.out.println("秋季"); break; default: System.out.println("月份不存在"); break; } System.out.println("OVER"); } }
月份和季节V2.0
-
break可以省略,会造成case穿透,执行多余的代码
-
如果能归类使用,也可以节省代码
package com.shine.switch666; import java.util.Scanner; public class Demo04 { public static void main(String[] args) { /** * 键盘录入月份,判定季节 */ /** * 代码思路: * 1、创建Scanner扫描器 * 2、提示输入月份 * 3、获取输入的月份 * 4、使用switch进行判定 * 5、结束 */ // 创建扫描器 Scanner sc = new Scanner(System.in); // 提示输入并获取月份 System.out.println("请输入月份[1~12]:"); int month = sc.nextInt(); // 使用switch判定 switch (month) { case 1: case 2: case 12: System.out.println("冬季"); break; 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; default: System.out.println("月份不存在"); break; } System.out.println("OVER"); } }
成绩和等级
package com.shine.switch666; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { /** * 键盘录入考试成绩,输出成绩的等级 * 0~59 不及格 * 60~69 及格 6 * 70~79 中等 7 * 80~89 良好 8 * 90~100 优秀 9/10 * * 代码思路: * 1、创建Scanner扫描器 * 2、提示输入成绩 * 3、获取输入的成绩 * 4、判定成绩等级 * 5、结束 */ // 创建扫描器 Scanner sc = new Scanner(System.in); // 提示输入并获取成绩 System.out.println("请输入考试成绩[0~100]:"); int score = sc.nextInt(); // 判定成绩是否合法 if (score>=0 && score<=100) { // 获取十位数字面值 int ten = score / 10; // 对合法的成绩进行判定创建 switch (ten) { case 6: System.out.println("及格"); break; case 7: System.out.println("中等"); break; case 8: System.out.println("良好"); break; case 9: case 10: System.out.println("优秀"); break; default: // 不及格的都在这里 System.out.println("不及格"); break; } } else { // 成绩小于0或者大于100 System.out.println("非法成绩"); } System.out.println("OVER"); } }