Java SimpleDataFormat解析时出现空指针异常?
我有一个方法,该方法应该取两次之间的差值,但是我在try块的第一行代码上不断得到一个null指针异常 time参数以“HH:mm:ss”格式接收函数调用的时间,time1和time2都是“HH:mm:ss”格式的全局字符串变量Java SimpleDataFormat解析时出现空指针异常?,java,nullpointerexception,time-format,Java,Nullpointerexception,Time Format,我有一个方法,该方法应该取两次之间的差值,但是我在try块的第一行代码上不断得到一个null指针异常 time参数以“HH:mm:ss”格式接收函数调用的时间,time1和time2都是“HH:mm:ss”格式的全局字符串变量 我一步一步地浏览了代码,似乎所有的设置都是正确的,只有当它到达date1=timeFormate.parse(time1)时,它才似乎不起作用。有人知道我可能做错了什么吗?time1在您引用它之后正在初始化。从你发布的代码中很清楚。Time2被分配给time,但time1
我一步一步地浏览了代码,似乎所有的设置都是正确的,只有当它到达
date1=timeFormate.parse(time1)
时,它才似乎不起作用。有人知道我可能做错了什么吗?time1在您引用它之后正在初始化。从你发布的代码中很清楚。Time2被分配给time,但time1在引用之前从未初始化 除了空指针异常之外,当您将毫秒差转换回日期时,这将出现严重错误。两个日期之间的差异作为日期是没有意义的。这是一件非常糟糕的事情。什么是time1
?在哪里申报?和初始化?显示完整的stacktrace.time1在该方法调用之前已初始化@jason@david显然不是,否则它就不会是null
——如果您认为它不是空的,请向我们证明它。在调用parse()
之前插入print语句以打印time1
和time2
。然后向我们展示程序输出,包括来自NullPointerException的完整stacktrace,你说你从你说的非null值中得到了你说的time1
has.lol ok这里是从调试器显示的变量,不管是哪种方式,我都知道了如何修复它,谢谢anyways@Andreas你听起来很生气。@david抱歉,我要求打印输出和完整的堆栈跟踪。您应该编辑问题并将其添加到您的问题中,以澄清问题。--更好的是,编辑问题并提供一个答案。
private String calculateTime(String time) {
time2 = time;
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
Date date1;
Date date2;
try {
date1 = timeFormat.parse(time1);
date2 = timeFormat.parse(time2);
long diff = date2.getTime() - date1.getTime();
time1 = timeFormat.format(new Date(diff));
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("The diff is "+ time1);
return time1;
}
}