日期计算Java分配
定义一个Java方法,将三个整数值(一个月、一天和一年)作为参数和 返回一年中该天的数字(介于1和365之间的整数,或闰年为366)。你的 方法应具有以下标题: 公共静态int dayNum(int月、int日、int年) 要计算给定日期的天数,请使用以下公式: a。dayNum=31*(第1个月)+天 b。如果月份在2月(2)之后,则从dayNum中减去(4*month+23)/10 c。如果年份是闰年且日期在2月29日之后,则将1添加到dayNum 例如,考虑2000年3月2日。dayNum是31*(3-1)+2或64。三月之后 二月,所以我们减去(4*3-23)/10,或35/10,或3(记住使用整数除法,它 截断余数)。这给了我们一个61天的数字。然而,2000年是闰年 3月2日紧接着2月29日,因此我们在dayNum中添加1。我们的最终答案告诉我们,2000年3月2日, 这是一年中的第62天 当我测试这个方法时,我总是得到不准确的结果。如果我进入2000年3月2日,它会告诉我这是第64天,如果我进入2月29日,它会告诉我这是第57天。若对我的代码进行任何修改,使其符合作业规范,并解释我做错了什么,我们将不胜感激日期计算Java分配,java,math,if-statement,conditional,Java,Math,If Statement,Conditional,定义一个Java方法,将三个整数值(一个月、一天和一年)作为参数和 返回一年中该天的数字(介于1和365之间的整数,或闰年为366)。你的 方法应具有以下标题: 公共静态int dayNum(int月、int日、int年) 要计算给定日期的天数,请使用以下公式: a。dayNum=31*(第1个月)+天 b。如果月份在2月(2)之后,则从dayNum中减去(4*month+23)/10 c。如果年份是闰年且日期在2月29日之后,则将1添加到dayNum 例如,考虑2000年3月2日。dayNum
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)
你需要检查二月之后的所有月份
if(month >= 3)
或
“三月在二月之后”,但是你的
if
语句只检查二月?我不确定这是否有帮助,但是b部分有(4*3+23),c部分有(4*3-23)这不是失败的原因-但是你的闰年表达式是错误的。应该是年份%400==0 |年份%4==0&&year%100!=0
-在任何您想让其最具可读性的地方插入括号(几乎)。否。“月在二月之后”。如果(月份>2),则应为if
if(month > 2)