定义一个采用三个整数值(一个月,一天和一年)作为参数的Java方法,
返回一年中的这一天的数字(1到365之间的整数,leap年则为366)。您的
方法应具有以下标头:
public static int dayNum(整数月,整数日,整数年)
要计算给定日期的天数,请使用以下公式:

一个。 dayNum = 31 *(月-1)+天

b。如果月份在2月(2)之后,则从dayNum中减去(4 *月+ 23)/ 10。

C。如果年份是a年,并且日期在2月29日之后,则将1添加到dayNum。

例如,考虑2000年3月2日。dayNum为31 *(3-1)+ 2或64。
2月,因此我们减去(4 * 3-23)/ 10,或35/10,或3(请记住使用整数除法,即
截断其余部分)。这使我们的日数为61。但是,2000年是a年,
3月2日在2月29日之后,因此我们将1加到dayNum上。我们的最终答案告诉我们,2000年3月2日,
是一年的第62天。

当我测试这种方法时,我总是得到不准确的结果。如果我进入2000年3月2日,它告诉我它是第64天,如果我进入2月29日,它告诉我它是第57天。如果对我的代码进行任何修改,使其符合作业规范以及对我做错了的解释,将不胜感激。

public static int dayNum (int month, int day, int year)
{
    int dayNum;
    dayNum = 31 * (month - 1) + day;

    if(month==2)
    {
        dayNum = dayNum - (4 * month + 23)/10;

        if(((year % 4==0 || year % 400 == 0 && (year % 100 != 0)))&&(month>2))
        {
            dayNum= dayNum + 1;

        }


    }
    return dayNum;

最佳答案

“ 3月在2月之后”,但是您的if语句仅检查2月?

if(month==2)


您需要检查2月之后的所有月份

if(month >= 3)


要么

if(month > 2)

10-01 23:02