【问题标题】:Error: Caused by: java.lang.NumberFormatException: Invalid double: ""错误:原因:java.lang.NumberFormatException:无效的双精度:“”
【发布时间】:2015-07-06 09:13:45
【问题描述】:

如何将字符串转换为双精度?

MainActivity.java

Location savedLocation = new Location("databaseLocation");
                savedLocation.setLatitude(Double.parseDouble(latitude));

Logcat:

07-06 14:41:21.870: E/AndroidRuntime(24097): FATAL EXCEPTION: main
07-06 14:41:21.870: E/AndroidRuntime(24097): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.locademo/com.example.locademo.MainActivity}: java.lang.NumberFormatException: Invalid double: ""
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2146)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.os.Looper.loop(Looper.java:177)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.ActivityThread.main(ActivityThread.java:4947)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at java.lang.reflect.Method.invokeNative(Native Method)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at java.lang.reflect.Method.invoke(Method.java:511)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at dalvik.system.NativeStart.main(Native Method)
07-06 14:41:21.870: E/AndroidRuntime(24097): Caused by: java.lang.NumberFormatException: Invalid double: ""
07-06 14:41:21.870: E/AndroidRuntime(24097):    at java.lang.StringToReal.invalidReal(StringToReal.java:63)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at java.lang.StringToReal.parseDouble(StringToReal.java:248)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at java.lang.Double.parseDouble(Double.java:295)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at com.example.locademo.MainActivity.getExpandableListData(MainActivity.java:203)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at com.example.locademo.MainActivity.onCreate(MainActivity.java:107)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.Activity.performCreate(Activity.java:5207)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
07-06 14:41:21.870: E/AndroidRuntime(24097):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2085)
07-06 14:41:21.870: E/AndroidRuntime(24097):    ... 11 more

【问题讨论】:

  • 您正在尝试将 空字符串 转换为数字。哪个无效
  • latitude 的值是多少?
  • 您正在输入 null 或空字符串。
  • 非常清楚Caused by: java.lang.NumberFormatException: Invalid double: ""
  • 仅仅阅读堆栈跟踪真的很有帮助......

标签: android expandablelistview numberformatexception


【解决方案1】:

错误清楚地表明您的值为空

java.lang.NumberFormatException: Invalid double: ""

你需要像这样添加一个条件

if (!latitude.equals("")){
Location savedLocation = new Location("databaseLocation");
                savedLocation.setLatitude(Double.parseDouble(latitude));
}

注意: 每当您进行数字格式转换时,请确保您没有得到任何空值或 null 值

【讨论】:

    【解决方案2】:

    Double.parseDouble(String) 工作正常,但如果提供的值无法转换为 double,则会抛出 NumberFormatException。参考堆栈跟踪的第二行:

    java.lang.NumberFormatException:无效双精度:“”

    在这种情况下意味着latitude 的值是""(空字符串)并且转换失败。您可以对空字符串(空字符串或null)实施一些检查,在latitude 到达转换之前修复它的值或catch 异常并处理它。

    【讨论】:

      【解决方案3】:

      检查您的纬度值是否为空或空白。

      if (!latitude.equals("")){
      // apply your logic
      }
      

      【讨论】:

        猜你喜欢
        • 2016-10-05
        • 2015-12-14
        • 2017-04-21
        • 1970-01-01
        • 2013-09-11
        • 2016-02-14
        • 1970-01-01
        • 2016-04-29
        • 1970-01-01
        相关资源
        最近更新 更多