首页 > 解决方案 > java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“double java.lang.Double.doubleValue()”

问题描述

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

提前致谢

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;

    }
Error in Logcat

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ambulance, PID: 17399
    java.lang.NullPointerException: Attempt to invoke virtual method 'double java.lang.Double.doubleValue()' on a null object reference
        at com.example.ambulance.MapsActivity.calculatedDistance(MapsActivity.java:451)
        at com.example.ambulance.MapsActivity$2$1.onChildAdded(MapsActivity.java:178)
        at com.google.firebase.database.core.ChildEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.0:79)
        at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.0:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.0:55)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

标签: javaandroidfirebase-realtime-databasemapsdouble

解决方案


代码本身没有任何问题,只是您必须了解为什么某些值在您不期望的情况下为空。

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

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

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

推荐阅读