2013-01-29 5 views
1

웹 서비스와 상호 작용하는 Android 애플리케이션을 만들었습니다.Android에서 이중 구문 분석 오류가 발생했습니다.

01-29 10:50:09.879: E/AndroidRuntime(12860): java.lang.RuntimeException: Unable to start activity ComponentInfo{aid.assistant233/aid.assistant233.AidAssistant233Activity}: java.lang.NumberFormatException: 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.os.Looper.loop(Looper.java:130) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.app.ActivityThread.main(ActivityThread.java:3691) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at java.lang.reflect.Method.invokeNative(Native Method) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at java.lang.reflect.Method.invoke(Method.java:507) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at dalvik.system.NativeStart.main(Native Method) 
01-29 10:50:09.879: E/AndroidRuntime(12860): Caused by: java.lang.NumberFormatException: 
01-29 10:50:09.879: E/AndroidRuntime(12860): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at java.lang.Double.parseDouble(Double.java:318) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at aid.assistant233.AidAssistant233Activity.SaveMapsToLocalDB(AidAssistant233Activity.java:1149) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at aid.assistant233.AidAssistant233Activity.UpdateApplicationData(AidAssistant233Activity.java:1060) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at aid.assistant233.AidAssistant233Activity.UpdateFromServer(AidAssistant233Activity.java:480) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at aid.assistant233.AidAssistant233Activity.onCreate(AidAssistant233Activity.java:212) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
01-29 1 

0 : 50 : 09.879 : E/AndroidRuntime (12860)은 :

... 11

이상의 I 생각 주된 문제는 관련된

난 다음 오류를 얻기

for (int i = 0; i < dati.getLength(); i++) { 
        Element element = (Element) dati.item(i); 
        localDB.insertMap(XmlElemValue(element, "Title"), Double.parseDouble(XmlElemValue(element, "Latitude")), // line 1149 
          Double.parseDouble(XmlElemValue(element, "Longitude")), Integer.parseInt(XmlElemValue(element, "MetriDistanza")), 
          Integer.parseInt(XmlElemValue(element, "MinutiIntervalloControllo"))); 
       } 
,369 :
01-29 10:50:09.879: E/AndroidRuntime(12860): Caused by: java.lang.NumberFormatException: 
01-29 10:50:09.879: E/AndroidRuntime(12860): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267) 
01-29 10:50:09.879: E/AndroidRuntime(12860): at java.lang.Double.parseDouble(Double.java:318) 

연관된 코드는 이것이다

WebService에 의해 반환 된 XML의 태그 위도은 다음과 같습니다

<Latitude>43.5729</Latitude> 
+0

당신이 parseDouble()와에서는 parseInt() 메소드 내부에 오는 값을 확인할 수 있습니다 이 시도? – Renjith

+3

1149 번 줄에 중단 점을 넣습니다. 앱을 실행합니다. XmlElemValue (요소, "Latitude")는 어떤 가치를 반환합니까? – Simon

+1

로캘 별 설정을 확인하십시오. 아마도 '43.5729'대신 '43,5729'가 필요합니다. – jlordo

답변

2

문제는

Double.parseDouble(XmlElemValue(element, "Latitude")) 

A NumberFormatException가 발생합니다 호출에 당신의 관련 코드에, 캐릭터 라인이 구문 분석을 포함하지 않는 경우 더블.

parseDouble으로 전달하기 전에 값을 확인해야합니다. 위도 값은 DMS (Degree Minutes Seconds) 형식으로 표시 될 수 있습니다.

0

Line 1149에서 (XmlElemValue(element, "Latitude")integer/double을 보유하는 문자열 값입니다. 문제는 정수/이중 값이 아닌 값을 파싱하는 것입니다. 그 이유는 당신이 Number Format Exception을 얻는 이유입니다. 인쇄하여 라인을 확인하십시오.

0

로캘은 자바가 소수점 대신 십진수 쉼표를 사용하도록 설정되어있을 수 있습니다.

NumberFormat nf = NumberFormat.getInstance(Locale.US); 
Double doubleValue = nf.parse(XmlElemValue(element, "Latitude")).doubleValue(); 
관련 문제