案例
计算当天是今年的第几天 实现中间穿透
/**
* 提示用户输入年月日信息,判断这一天是这一年中的第几天并打印
*
* 闰年(满足以下任一一点)366天 2月份 29天
* 1、年份是4的倍数,但不是100的倍数。
* 2、年份数是400的倍数
*
* 1900年是4的倍数,但同时也是100的倍数,所以是平年。
* 2000年是100的倍数,但它是400的倍数,所以是闰年。
*/
public class ZuoYe1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int totalDay = 0;
while(true){
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
System.out.println("请输入日:");
int day = sc.nextInt();
switch(month){
case 12:totalDay+=31;
case 11:totalDay+=31;
case 10:totalDay+=30;
//因为month是9所以直接从下面开始穿透
//将8-1月份的总天数陆续加起来
//最后加9月份过的day天
case 9:totalDay+=31;
case 8:totalDay+=31;
case 7:totalDay+=30;
case 6:totalDay+=31;
case 5:totalDay+=30;
case 4:totalDay+=31;
case 3:totalDay+=29;
case 2:totalDay+=31;
case 1:totalDay+=day;
}
//判断是平年还是闰年
if((0 == year%4 && 0!=year%100)||0 ==year%400){
System.out.println(year+"是闰年,已经过了"+totalDay+"天了");
}else{
totalDay--;
System.out.println(year+"是平年,已经过了"+totalDay+"天了");
}
}
}
}
显示结果:
请输入年份:
2021
请输入月份:
9
请输入日:
3
2021是平年,已经过了246天了