java 纠错一段代码

来源:百度知道 编辑:UC知道 时间:2024/05/17 19:27:01
//求任意两个日期之间相隔的天数
class CountDays{
public int getDays(int year,int month, int days) { //同一年内任意两个日期之间的天数
if(month > 12 || month < 1) {
System.out.println("输入的月份过大或过小!");
return 0;
}

if(!isRunNian(year)) {
switch(month) {
case 1: return days; //其实此处没必要有continue,因为遇到return语句就跳出了撒
case 2: return(31+days);
case 3: return(59+days);
case 4: return(90+days);
case 5: return(120+days);
case 6: return(151+days);

case 7: return(181+days);
case 8: return(212+days);
case 9: return(243+days);
case 10:return(273+days);
case 11:return(304+days);
case 12:return(334+days);
default://no code
}
return 0;
}

if(isRunNian(year)){
switch(month) {
case 1: return days;
case 2: return(31+days)

getBetweenYears方法中,while(isRunNian(year)) 改成if(isRunNian(year))
你那死循环了

用另一种方法来比较两个日期相差的天数吧,先取两个日期的毫秒数,然后相减再求出相差的天数,这样不用那么费事
Calendar calendar = Calendar.getInstance();
calendar.set(2008, 12, 5);
Calendar calendar2 = Calendar.getInstance();
calendar2.set(2008, 11, 4);
long days = Math.abs((calendar2.getTimeInMillis() - calendar.getTimeInMillis()) /(1000*60*60*24));

在格林威治标准时间1970年的1月1日 00:00:00.000之后的日期都可以这样计算

public int getBetweenYears(int year1,int year2 ){//两个年份之间的闰年数
int count=0;
for(int year=year1;year<=year2;year++){
while(isRunNian(year))
count++;
}
while(isRunNian(year)) 这句死循环了.应该用if(...)