分支结构 --> switch case分支实现中间穿透

案例

计算当天是今年的第几天 实现中间穿透

/**
 * 提示用户输入年月日信息,判断这一天是这一年中的第几天并打印
 * 
 * 闰年(满足以下任一一点)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天了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~忆缘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值