尝试在Android中创建对象时出现NumberFormatException

时间:2016-02-26 16:31:52

标签: android object numberformatexception objectinstantiation

我正在尝试为我的大学项目开发​​一个应用程序,该应用程序跟踪由ADS-B接收器拾取的飞机,该接收器连接到将数据流式传输到我的应用程序的服务器。

为此,我创造了一架飞机"飞机"用于跟踪飞机位置的类,可通过每个飞机的唯一模式-S十六进制代码识别,以及发现的每架飞机的ArrayList。

这是应该创建Aircraft对象的代码:

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) 

我只是厌倦了这些错误。我甚至试图通过从它创建一个String并将其插入到它的位置来替换sbsMessageArray [4],但这并没有帮助。

2 个答案:

答案 0 :(得分:1)

正如Vasily Kabunov在评论中所说,传入Integer.parseInt()的一个(或所有)字符串是空的。

Integer.parseInt(“”)将抛出异常,因为没有任何内容可以解析为整数。检查数据源或使用yourstring.equals(“”)执行空字符串测试。

答案 1 :(得分:0)

您假定为整数的至少一个值不是整数。它可能为null或空,也可能是小数。