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");
}
}