2016-02-26 18 views
-1

我正在嘗試爲我的大學項目開發​​一個應用程序,用於跟蹤由ADS-B接收器拾取的飛機,該接收器連接到將數據流式傳輸到我的服務器應用程序。爲了做到這一點,我創建了一個「飛機」類,以跟蹤飛機的位置,可以通過每一個獨特的Mode-S十六進制碼和每個發現的飛機的ArrayList進行識別。NumberFormatException嘗試在Android中創建對象時

這是應該建立飛機對象的代碼:

Aircraft aircraftToAdd = new Aircraft(sbsMessageArray[4], //Mode-S hex code 
      sbsMessageArray[10], //callsign 
      Integer.parseInt(sbsMessageArray[11]), //altitude 
      Integer.parseInt(sbsMessageArray[12]), //ground speed 
      Integer.parseInt(sbsMessageArray[13]), //track 
      Double.parseDouble(sbsMessageArray[14]), //latitude 
      Double.parseDouble(sbsMessageArray[15])); //longitude 

然後被添加到ArrayList像這樣:

aircraftArrayList.add(aircraftToAdd); 

不過,出現這種情況:

02-26 16:09:26.869 14873-14873/com.example.se415017.maynoothskyradar E/AndroidRuntime: FATAL EXCEPTION: main 
                        Process: com.example.se415017.maynoothskyradar, PID: 14873 
                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.se415017.maynoothskyradar/com.example.se415017.maynoothskyradar.activities.MainActivity}: java.lang.NumberFormatException: Invalid int: "" 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420) 
                         at android.app.ActivityThread.access$900(ActivityThread.java:154) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:135) 
                         at android.app.ActivityThread.main(ActivityThread.java:5294) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:372) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 
                        Caused by: java.lang.NumberFormatException: Invalid int: "" 
                         at java.lang.Integer.invalidInt(Integer.java:138) 
                         at java.lang.Integer.parseInt(Integer.java:358) 
                         at java.lang.Integer.parseInt(Integer.java:334) 
                         at com.example.se415017.maynoothskyradar.activities.MainActivity.addAircraftToList(MainActivity.java:525) 
                         at com.example.se415017.maynoothskyradar.activities.MainActivity.parseSBSMessage(MainActivity.java:516) 
                         at com.example.se415017.maynoothskyradar.activities.MainActivity.readFromTextFile(MainActivity.java:419) 
                         at com.example.se415017.maynoothskyradar.activities.MainActivity.onCreate(MainActivity.java:147) 
                         at android.app.Activity.performCreate(Activity.java:5990) 
                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)  
                         at android.app.ActivityThread.access$900(ActivityThread.java:154)  
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)  
                         at android.os.Handler.dispatchMessage(Handler.java:102)  
                         at android.os.Looper.loop(Looper.java:135)  
                         at android.app.ActivityThread.main(ActivityThread.java:5294)  
                         at java.lang.reflect.Method.invoke(Native Method)  
                         at java.lang.reflect.Method.invoke(Method.java:372)  
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)  
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)  

我只是厭倦了這些錯誤。我甚至嘗試通過從它創建一個字符串並將它插入它的位置來替換sbsMessageArray [4],但這沒有幫助。

+1

問題是你的'Integer.parseInt()'的參數是空字符串。嘗試在解析爲「int」之前檢查字符串的長度。 –

回答

1

正如Vasily Kabunov在評論中所說,傳入Integer.parseInt()的一個(或全部)字符串是空的。

Integer.parseInt(「」)將拋出一個異常,因爲沒有東西可以解析爲一個整數。檢查您的數據源或使用yourstring.equals(「」)做空字符串測試。

+0

謝謝,我將你和瓦西里的建議放在船上,爲飛機創建了一個更基本的構造函數,它只是Mode-S十六進制代碼,當我的接收器從它接收新消息時,我將更新飛機的屬性。 – CiaranC94

0

至少有一個您認爲是整數的值不是整數。它可能爲空或空,或可能是小數。

相關問題