2013-12-16 3 views
0

У меня есть текстовый файл, содержащий рамки NMEA. Я получаю широту и долготу $ GPGGA и $ GPRMC кадров. Для этой части это было хорошо.Невозможно повлиять на значения в простой таблице Double [], которая всегда равна нулю

Теперь я хотел бы преобразовать широту и долготу в десятичные градусы. Проблема возникает, когда я пытаюсь повлиять на значения до Double[]coordinatestoconvert. Это всегда значение null.

Это как эта ошибка действительно идиот, но я оборачиваюсь все это утром для такой глупости ...

Может кто-то мне помочь, пожалуйста?

Вот методы, которые я использую:

public String readText(String filepath) throws Exception 
{ 
    String text=""; 
    try 
    { 
     InputStream inputs=new FileInputStream(filepath); 
     InputStreamReader inputsreader=new InputStreamReader(inputs); 

     BufferedReader buffer=new BufferedReader(inputsreader); 
     String line; 
     while((line=buffer.readLine())!=null) 
     { 
      /* Server send to Client the full line. Then Client will select 
      * which data will be retrieve */ 

      String[]splitedline=line.split(","); 
      Double[]decimalcoordinates=retrieveCoordinates(splitedline); 

      messagearea.append(decimalcoordinates[0].toString()+","+decimalcoordinates[1].toString()); 
      tcpserver.sendMessage(decimalcoordinates[0].toString()+","+decimalcoordinates[1].toString()); 

     } 
     buffer.close(); 
    } 
    catch(FileNotFoundException e) 
    { 
     System.out.println(e); 
    } 
    return text; 
} 

public Double[] retrieveCoordinates(String[] splitedline) 
{ 
    Double[]coordinates=null; 


    if((splitedline[0]=="$GPGGA") || (splitedline[0]=="$GPRMC")) 
    { 
     Double[]coordinatestoconvert=null; 
     // coordinatestoconvert is always null here 
     coordinatestoconvert[0]=Double.parseDouble(splitedline[3]); 
     coordinatestoconvert[1]=Double.parseDouble(splitedline[5]); 
     coordinates=convertNmeaToDecimal(coordinatestoconvert); 
    } 
    return coordinates; 
} 

public Double[] convertNmeaToDecimal(Double[] coordinatestoconvert) 
{ 
    Double[]coordinatesconverted=null; 
    for(int i=0;i<2;i++) 
    { 
     Double degrees=coordinatestoconvert[i]/100; 
     Double time=coordinatestoconvert[i]-degrees; 

     coordinatesconverted[i]=degrees+time/60; 
    } 
    return coordinatesconverted; 
} 
+1

использовать '.equals()' метод проверки строки. ** НЕ используйте ** == '. –

ответ

2
Double[]coordinatestoconvert=null; 

Эта линия должна быть:

Double[] coordinatestoconvert=new Double[coordinatestoconvert.length]; 

У вас также есть та же проблема с coordinatesconverted.

Вы также должны ознакомиться с стандартными стандартами java и кодирования, так как это упростит чтение кода для других.

Вы также выполняете сравнение строк, используя ==, а не .equals, что неверно.

И вы получите лучшую производительность (если это имеет значение для этой программы), используя двойной, а не двойной, где бы вы ни находились.

+0

Спасибо за ваш ответ @TimB. Это работает хорошо. – Tofuw

+0

Привет, это я снова. Я только что сделал новую версию своих методов, и я пропустил ту же ошибку. Не могли бы вы мне помочь ? Вот мой новый пост http://stackoverflow.com/questions/20636363/java-cant-affect-values-to-a-simple-double-table-which-is-always-null-com – Tofuw