2015-07-06 4 views
-3

Как преобразовать строку в double?Ошибка: вызвано: java.lang.NumberFormatException: Недопустимый double: ""

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 
+2

Вы пытаетесь передать ** пустую строку ** на число. Который ** недействителен **. –

+1

Какова ценность 'широты'? –

+1

@PrerakSola: '' "" '' –

ответ

-1

Убедитесь, что ваше значение широты будет нулевым или пустым.

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

, пожалуйста, предоставьте код – moffeltje

3

Ошибка ясно показывает ваше значение пустое

java.lang.NumberFormatException: Invalid double: "" 

Вам нужно добавить одно условие, как этот

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

Примечание: Всякий раз, когда вы делаете преобразование формата номер убедитесь, что вы не» t получить любые пустые или нулевые значения

1

Double.parseDouble(String) работает нормально, но выбрасывает NumberFormatException, если поставляемое значение не может быть преобразовано в double. Ссылаясь на вторую линию вашего StackTrace:

java.lang.NumberFormatException: Invalid double: ""

средство в этом случае latitude имел значение "" (пустая строка) и преобразование не удалось. Вы можете выполнить некоторые проверки для пустых строк (пустая строка или null), исправить значение latitude до того, как оно достигнет конверсии или catch исключение и обработать его.

Смежные вопросы