-1

Я пытаюсь разработать приложение для моего университетского проекта, который отслеживает самолеты, которые были получены приемником ADS-B, который подключен к серверу, который передает данные на мой приложение.NumberFormatException при попытке создать объект в Android

Для этого я создал класс «Самолет», чтобы следить за положением самолета, идентифицируемым по уникальному шестнадцатеричному кодексу Mode-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)  

Я просто устал от этих ошибок. Я даже попытался заменить sbsMessageArray [4], создав String из него и вставив его на свое место, но это не помогло.

+1

Проблема заключается в аргументе вашего 'Integer.parseInt()' пустой строки. попробуйте проверить длину строки перед синтаксическим анализом на 'int'. –

ответ

1

Как сказал Василий Кабунов в комментарии, один (или все) строк, переданных в Integer.parseInt(), пуст.

Integer.parseInt ("") генерирует исключение, так как нет ничего, чтобы проанализировать целое число. Проверьте источник данных или выполните пустой тест с помощью yourstring.equals ("").

+0

Спасибо, я принял ваш совет и совет Василия на борту и создал более базовый конструктор для Aircraft, который является всего лишь шестнадцатеричным кодом Mode-S, и я обновляю атрибуты Aircraft, когда мой приемник получит от него новые сообщения. – CiaranC94

0

По крайней мере одно из значений, которое вы считаете целочисленным, не является целым числом. Он может быть пустым или пустым или может быть десятичным.

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