Switch
格式:
switch(表达式){
case 值1:
语句体1
break;
case 值2:
语句体2
break;
…
default:
语句体n+1
break;
}
执行流程:
- 首先计算表达式的值
- 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束
- 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束掉
案例
返回星期几
public static void main(String[] args) {
var c= Calendar.getInstance();
int w=c.get(Calendar.DAY_OF_WEEK);
//返回值为1~7
String wk="";
switch (w){
case 2:
wk="星期一";
break;
case 3:
wk="星期二";
break;
case 4:
wk="星期三";
break;
case 5:
wk="星期四";
break;
case 6:
wk="星期五";
break;
case 7:
wk="星期六";
break;
default:
wk="星期日";
break;
}
System.out.println(wk);
}
判断某个月有多少天
public static void main(String[] args) {
//判断某个月有多少天
Scanner sc=new Scanner(System.in);
int year = 2020;
int month = 2;
System.out.print("请输入年:");
year=sc.nextInt();
System.out.print("请输入月:");
month = sc.nextInt();
var c = Calendar.getInstance();
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
//三元表达式: 判断是否是闰年
//days = year % 400 == 0 || year % 4 == 0 && year % 100 != 0 ? 29 : 28;
//判断闰年方法 8版本新增
LocalDate now = LocalDate.of(year, month, 1);
days = now.isLeapYear() ? 29 : 28;
break;
default:
days = 0;
break;
}
System.out.printf("%d年%d月有%d天", year, month, days);
}
/*
请输入年:2021
请输入月:8
2021年8月有31天
*/
public static void main(String[] args) {
int year = 2021;
int m = 7;
//switch 12以后的新方法 ->3;返回值
int days = switch (m) {
case 1, 3, 5, 7, 8, 10, 12 -> 31;
case 2->year % 400 == 0 || year % 4 == 0 && year % 100 != 0 ? 29 : 28;
default -> 30;
};
System.out.printf("%d年%d月有%d天", year, m, days);
}
//2021年7月有31天
public static void main(String[] args) {
//判断某一年某个月有多少天
int year = 2021;
int m =8;
int days = switch (m) {
case 1, 3, 5, 7, 8, 10, 12 -> 31;
case 2->{
yield year % 400 == 0 || year % 4 == 0 && year % 100 != 0 ? 29 : 28;
}
default -> 30;
};
System.out.printf("%d年%d月有%d天", year, m, days);
System.out.println();
//判断某个月有多少天
switch (m){
case 2 ->{
System.out.println(year % 400 == 0 || year % 4 == 0 && year % 100 != 0 ? 29 : 28);
}
case 4,6,9,11 ->{
System.out.println(30);
}
default -> System.out.println(31);
}
}
//2021年8月有31天
//31