定义一个 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/