java.lang.NullPointerException:尝试调用虚拟方法';double java.lang.double.doubleValue()';关于空对象引用

java.lang.NullPointerException:尝试调用虚拟方法';double java.lang.double.doubleValue()';关于空对象引用,java,android,firebase-realtime-database,maps,double,Java,Android,Firebase Realtime Database,Maps,Double,一切正常,我在最后得到了这个错误,请给出解决方案。我已经尝试了每一种解决办法,我不知道该怎么办。。请给出过去两天的确切答案,但我无法解决问题 提前谢谢 public double calculatedDistance(DataSnapshot dataSnapshot ) { HashMap<String, Object> values = (HashMap<String, Object>) dataSnapshot.getValue();

一切正常,我在最后得到了这个错误,请给出解决方案。我已经尝试了每一种解决办法,我不知道该怎么办。。请给出过去两天的确切答案,但我无法解决问题

提前谢谢

public double calculatedDistance(DataSnapshot dataSnapshot ) {


        HashMap<String, Object> values = (HashMap<String, Object>) dataSnapshot.getValue();

        double lati = Double.parseDouble(values.get("latitude").toString());
        double longi = Double.parseDouble(values.get("longitude").toString());

        double xSquare = Math.pow(lat-lati, 2);
        double ySquare = Math.pow(lng-longi, 2);
        double distance = Math.sqrt(xSquare + ySquare);

        //double dist = distance;

        textViewdistance.setText(String.valueOf(""+distance+""+"km"));
        return distance;

    }

代码本身没有什么错误,只是您必须理解为什么某些值在您不希望它为空时为空

通常,当可能发出空指针异常时,必须进行检查

并检查这些“lat-lati”和“lng-longi”变量

    double xSquare = Math.pow(lat-lati, 2);
    double ySquare = Math.pow(lng-longi, 2);

看起来“纬度”或“经度”键根本没有值
    double xSquare = Math.pow(lat-lati, 2);
    double ySquare = Math.pow(lng-longi, 2);