判断某年月日是当年的第几天

题目描述:
输入三个整数year,month,day分别表示当前年月日,输出该天是当年的第几天

思路:
* 由于只有十二个月,所以可以枚举每个月的天数
* 需要单独考虑的是当前年份是否是闰年&&当前月份是否大月2月,如果都满足,则在总天数上+1

public class Main {
    public static void main(String args[]) {
        System.out.println(whichDay(2016,2,1));//为当年第31+1 = 32天
        System.out.println(whichDay(2017,3,1));//为当年第31+28+1 = 60天
        System.out.println(whichDay(2016,3,1));//为当年第31+29+1 = 61天
    }
    /**
     * 由于只有十二个月,所以可以枚举每个月的天数
     * 需要单独考虑的是当前年份是否是闰年&&当前月份是否大月2月,如果都满足,则在总天数上+1
     * @param year
     * @param month
     * @param day
     * @return
     */
    public static int whichDay(int year, int month, int day) {
        final int[] monthes = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
        int i = 0,num = 0;
        while(i < month - 1)
            num += monthes[i++];
        num += day;
        if(month < 3)
            return num;
        return num+isLeap(year);
    }

    /**
     * 判断输入的当前年份是否是闰年,是闰年则返回1,否则返回0;
     */
    public static int isLeap(int year) {
        if (year % 4 == 0 && year % 100 != 0)
            return 1;
        if (year % 400 == 0)
            return 1;
        else return 0;
    }
}

输出如下:

32
60
61
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值