奇怪的错误
这个类在编译时没有问题,在运行时得到的结果如下:
输入一个日期:
输入年份:2007
输入月份:1
输入日期:31
2007年2月3日
输入另一个日期:
输入年份:2007
输入月份:12
输入日期:31
2008年0月31日
你输入的两个日期相隔334
正确的应该是:
输入一个日期:
输入年份:2007
输入月份:1
输入日期:31
2007年1月31日
输入另一个日期:
输入年份:2007
输入月份:12
输入日期:31
2007年12月31日
你输入的两个日期相隔334
只要输入带31日的月份,都会出错。
源代码在1.6的环境中运行:
//此类要用jdk1.5.0以上
import java.util.*;
public class OnlyDayInstance {
/**
* @param args
*/
public static void main(String[] args)
{
Calendar calendar = Calendar.getInstance();
Scanner scanner = new Scanner(System.in);
int year = 0 ;
int month = 0 ;
int day = 0 ;
int otheryear = 0 ;
int othermonth = 0 ;
int otherday = 0 ;
System.out.println( "输入一个日期: ");
System.out.print( "输入年份: ");
year = scanner.nextInt();
System.out.print( "输入月份: ");
month = scanner.nextInt();
System.out.print( "输入日期: ");
day = scanner.nextInt();
calendar.set(year, month, day);
System.out.println(calendar.get(Calendar.YEAR)+ "年 "+calendar.get(Calendar.MONTH)+ "月 "+calendar.get(Calendar.DATE)+ "日 ");
long time1 = calendar.getTimeInMillis();
System.out.println( "输入另一个日期: ");
System.out.print( "输入年份: ");
otheryear = scanner.nextInt();
System.out.print( "输入月份: ");
othermonth = scanner.nextInt();
System.out.print( "输入日期: ");
otherday = scanner.nextInt();
calendar.set(otheryear, othermonth, otherday);
System.out.println(calendar.get(Calendar.YEAR)+ "年 "+calendar.get(Calendar.MONTH)+ "月 "+calendar.get(Calendar.DATE)+ "日 ");
long time2 = calendar.getTimeInMillis();
long distime = (time2 - time1) / (1000*60*60*24);
System.out.println( "你输入的两个日期相隔 "+distime);
}
}
------解决方案--------------------读API不仔细啊,Calender里月份是从0到11的,在处理的时候需要减一加一的。
------解决方案--------------------月是从0~11滴.
------解决方案--------------------输入一个日期:
输入年份:2007
输入月份:1
输入日期:31
2007年0月31日
输入另一个日期:
输入年份:2007
输入月份:12
输入日期:31
2007年11月31日
你输入的两个日期相隔334
如果按照 z_lping(Schemer) 说的做的话就会出现上面的结果!
还是不对!