日期计算Java分配

时间:2014-05-01 02:08:16

标签: java math if-statement conditional

定义一个Java方法,它将三个整数值(一个月,一天和一年)作为参数和 返回当年的那一天的数字(1到365之间的整数,或闰年的366)。您的 方法应该有以下标题: public static int dayNum(int month,int day,int year) 要计算给定日期的日期编号,请使用以下公式:

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

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

℃。如果年份是闰年且日期是2月29日之后,请将1添加到dayNum。

例如,考虑2000年3月2日.dayNum是31 *(3 - 1)+ 2,或64. March来到之后 二月,所以我们减去(4 * 3 - 23)/ 10,或35/10,或3(记得使用整数除法,其中 截断余数)。这给我们的日数为61.然而,2000年是闰年,而且 3月2日是2月29日之后,所以我们将1添加到dayNum。我们的最终答案告诉我们,2000年3月2日, 是一年中的第62天。

当我测试这种方法时,我一直得到不准确的结果。如果我进入2000年3月2日它告诉我它的第64天,如果我进入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;

1 个答案:

答案 0 :(得分:1)

"三月来到二月" ,但你的if语句只检查二月?

if(month==2)

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

if(month >= 3)

if(month > 2)