java - 日期计算 Java 赋值

标签 java math if-statement conditional-statements

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

a.天数 = 31 * (月 - 1) + 天

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

c.如果年份是闰年且日期在 2 月 29 日之后,则 dayNum 加 1。

例如,考虑 2000 年 3 月 2 日。dayNum 为 31 * (3 - 1) + 2,或 64。3 月紧随其后 二月,所以我们减去 (4 * 3 - 23)/10,或 35/10,或 3(记住使用整数除法,即 截断余数)。这样我们得到的天数是 61。但是,2000 年是闰年,并且 2 月 29 日之后是 3 月 2 日,因此我们将 dayNum 加 1。我们的最终答案告诉我们,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;

最佳答案

“三月在二月之后出现”,但您的 if 语句只检查二月?

if(month==2)

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

if(month >= 3)

if(month > 2)

关于java - 日期计算 Java 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23401054/

相关文章:

java - 编写可扩展的网络应用程序/网络服务的书

java - 获取应用程序关闭的时间。如何?

Java 返回 null 和结果

ios - 常见几何形状绘图背后的数学

javascript - 为什么在浏览器中打开网页时功能不执行?

java - 变量类型不兼容的问题

java - 从单独的方法关闭计时器

java - 对于长度变化很大的输入,最佳 StringBuffer 初始容量是多少?

html - 如何计算出边框旋转造成的位置差异

windows - 为什么我的 Windows 批处理文件在满足条件后不断循环?