/*
案例:使用switch-case实现:对学生成绩大于60分的,输出“合格”。低于60分,输出“不合格”。
*/
class SwitchCaseTest1{
public static void main(String[] args) {
//定义一个学生成绩的变量
int score = 78;
//根据需求,进行分支
//方式1:
/*switch(score){
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("不及格");
break;
//.....
case 100:
System.out.println("及格");
break;
default:
System.out.println("成绩输入有误");
break;
}
*/
//方式2:
switch(score / 10){
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("不及格");
break;
case 2:
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;
default:
System.out.println("成绩输入有误");
break;
}
//方式2另一种写法:体会case穿透
switch(score / 10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
default:
System.out.println("成绩输入有误");
break;
}
//方式3:不是很严谨,如果超过分数区间,则结果是不对的
switch (score / 60){
case 0:
System.out.println("不及格");
case 1:
System.out.println("及格");
default:
System.out.println("成绩输入有误");
break;
}
}
}
运行结果如下:
/*
案例:编写程序:从键盘上输入2023年的“month”和“day”,要求通过程序输出输入的日期为2023年的第几天。
*/
import java.util.Scanner;
class SwitchCaseTest2{
public static void main(String[] args){
//1、使用Scanner,从键盘获取2023年的month、day
Scanner input = new Scanner(System.in);
System.out.println("请输入2023年的月份:");
int month = input.nextInt();//阻塞式方法
System.out.println("请输入2023年的天:");
int day = input.nextInt();
//假设用户输入的数据是合法的。后期我们在开发中,使用正则表达式进行校验。
//2、使用switch-case实现分支结构
int sumDays = 0;//记录总天数
//方式1:不推荐。存在数据的冗余
/*
switch(month){
case 1:
sumDays = day;
break;
case 2:
sumDays = 31 + day;
break;
case 3:
sumDays = 31 + 28 + day;
break;
//.....
case 12;
sumDays = 31 + 28 +...+ 30 + day;
break;
}
*/
//方式2:
switch (month){
case 12:
sumDays += 30;
case 11:
sumDays += 31;
case 10:
sumDays += 30;
case 9:
sumDays += 31;
case 8:
sumDays += 31;
case 7:
sumDays += 30;
case 6:
sumDays += 31;
case 5:
sumDays += 30;
case 4:
sumDays += 31;
case 3:
sumDays += 28; //28:二月份的总天数
case 2:
sumDays += 31; //31:一月份的总天数
case 1:
sumDays += day;
//break;
}
运行结果如下: