Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SimpleDataFormat解析时出现空指针异常?_Java_Nullpointerexception_Time Format - Fatal编程技术网

Java SimpleDataFormat解析时出现空指针异常?

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

我有一个方法,该方法应该取两次之间的差值,但是我在try块的第一行代码上不断得到一个null指针异常

time参数以“HH:mm:ss”格式接收函数调用的时间,time1和time2都是“HH:mm:ss”格式的全局字符串变量


我一步一步地浏览了代码,似乎所有的设置都是正确的,只有当它到达
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;

    }
}