从键盘输入2022年的月和日,然后打印出这是2022年的第几天
方法一:
也是最容易想到的
import java.util.Scanner;
class SwitchCaseTest{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入2022年的month");
int mon = scanner.nextInt();
System.out.println("请输入2022年的day");
int day = scanner.nextInt();
int daySum = 0;
switch(mon){
case 1:
daySum = day;
break;
case 2:
daySum = 31 + day;
break;
case 3:
daySum = 31 + 28 + day;
break;
case 4:
daySum = 31 + 28 + 31 + day;
break;
case 5:
daySum = 31 + 28 + 31 + 30 + day;
break;
case 6:
daySum = 31 + 28 + 31 + 30 + 31 + day;
break;
case 7:
daySum = 31 + 28 + 31 + 30 + 31 + 30 + day;
break;
case 8:
daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;
break;
case 9:
daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + day;
break;
case 10:
daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 30 + day;
break;
case 11:
daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
break;
case 12:
daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
break;
}
System.out.println(2022 + "年" + mon + "月" + day + "日是第" + daySum + "天");
}
}
但是会发现,会有很多冗余,前面加过的月份会再写一遍,那如何减少这个重复工作呢?
其实,倒过来就可以精巧的实现
方法二:
import java.util.Scanner;
class SwitchCaseTest{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入2022年的month");
int mon = scanner.nextInt();
System.out.println("请输入2022年的day");
int day = scanner.nextInt();
int daySum = 0;
switch(mon){
case 12:
daySum += 30;
case 11:
daySum += 31;
case 10:
daySum += 30;
case 9:
daySum += 31;
case 8:
daySum += 31;
case 7:
daySum += 30;
case 6:
daySum += 31;
case 5:
daySum += 30;
case 4:
daySum += 31;
case 3:
daySum += 28;
case 2:
daySum += 31;
case 1:
daySum += day;
}
System.out.println(2022 + "年" + mon + "月" + day + "日是第" + daySum + "天");
}
}
小总结
由于switch-case里面break语句是可选的,如果不写break就会执行满足条件的case以及之后的所有语句,这里正好是利用了这个特性,实现了一个累加操作。