我目前正在处理一个应用程序,以查找特定日期的一年中的某天(1-366)。我这样做是为了比较日期并找出它们之间的时间差异。但是,我目前遇到一些问题...当我将日期设置为12月31日时,它说是361或362天(取决于leap年),如果我将其设置为10月31日,则说是302天,但是如果我将其设置为11月1日,即今天是311天。...我不知道此错误来自何处。你能指出我正确的方向吗?而且,我如何确定星期几?
这是我的班级,查找一年中的某天(常见问题):
public int finddoy(int month, int day, int year){
int i = 0;
int days=0;
while(i<month) {
if(month==1){days += 31;}
if(month==2){days += 28;}
if(month==3){days += 31;}
if(month==4){days += 30;}
if(month==5){days += 31;}
if(month==6){days += 30;}
if(month==7){days += 31;}
if(month==8){days += 31;}
if(month==9){days += 30;}
if(month==10){days += 31;}
if(month==11){days += 30;}
if(month==12){days += 31;}
i++;
}
if(year%4==0){ if(month>2){days+=1;} }
return days + day;
}
我刚刚将程序与在互联网上找到的图表进行了比较,我的日期错开了……1月,2月和5月是唯一准确的月份(以总天数计)
答案 0 :(得分:1)
尝试一下:
public int findday(int month, int day, int year){
int i = 0;
int days=0;
while(i<month) {
if(i==0){days += 31;}
if(i==1){days += 28;}
if(i==2){days += 31;}
if(i==3){days += 30;}
if(i==4){days += 31;}
if(i==5){days += 30;}
if(i==6){days += 31;}
if(i==7){days += 31;}
if(i==8){days += 30;}
if(i==9){days += 31;}
if(i==10){days += 30;}
if(i==11){days += 31;}
i++;
}
if(year%4==0){ if(month>2){days+=1;} }
return days + day;
}
我认为它可行
还要注意the年:它们不是每四年一次!