【问题标题】:java.lang.NullPointerException: Attempt to invoke virtual method 'double java.lang.Double.doubleValue()' on a null object reference [duplicate]java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“double java.lang.Double.doubleValue()”[重复]
【发布时间】:2020-01-25 11:13:36
【问题描述】:

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

提前致谢

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)

【问题讨论】:

  • 看起来键“纬度”或“经度”根本没有值

标签: java android firebase-realtime-database maps double


【解决方案1】:

代码本身并没有错,只是你必须理解为什么某些值在你不期望的时候是空的。

一般来说,当可能发出空指针异常时,必须进行检查。

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

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

【讨论】:

    猜你喜欢
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2016-07-30
    • 2015-02-09
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多