奇怪的错误
haiye 2007-05-13 11:45:21 这个类在编译时没有问题,在运行时得到的结果如下:
输入一个日期:
输入年份: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);
}
}