2012-04-04 7 views
0

Мой код, похоже, не работает, когда токен строки является int. Вот оно:Строка parse в double

public class CO2Data { 

    CO2Data dataSet[] = new CO2Data[10]; 
    String strLine = "Italy 476.08 116.86 2 592"; 
    int lines = 10; 
    double roadCO2; 

    public void saveLineInfo(String strLine, int lines) { 
     StringTokenizer token = new StringTokenizer(strLine); 
     String str = "hello"; 
     int count = 0; 
     for (int i = 0; i < lines; i++) { 
      while (token.hasMoreTokens()) { 
       str = token.nextToken(); 
       if (count == 3) { 
        getRoadCO2(str, roadCO2); 
        dataSet[i].setRoadCO2(roadCO2); 
       } 
       count++; 
      } 
     } 
    } 

    public double getRoadCO2(String str, double roadCO2) { 
     roadCO2 = Double.parseDouble(str); 
     return roadCO2; 
    } 

    public void setRoadCO2(double roadCO2) { 
     this.roadCO2 = roadCO2; 
    } 
} 

В остальной части линий, roadCO2 является двойной, поэтому я предполагаю, что моя программа будет путаться? Как это исправить? Спасибо!

+3

Вы можете добавить тег для этого для фактического языка, который вы используете. Это похоже на Java, но это может быть один из разных языков. Кроме того, область охвата roadCO2 является беспорядком в функции getRoadCO2 ... – Ariel

+0

Является ли это C# или C++ ?? Также возникает вопрос о переменной roadCO2 или касается параметра «String strLine»? – hypervisor666

+0

Извините, это java. –

ответ

1

Я бы рекомендовал изменить имена параметров на ваши методы на нечто несколько отличное от класса datamember «roadCO2». Это может помочь вам разобраться с ошибкой :)

1

Когда я запустил ваш код, я получил исключение NullPointerException в строке 22. Это означает, что данные массива не были инициализированы.

Вы можете инициализировать массив следующим

for(int i = 0; i < dataSet.length; i++) { 
    dataSet[i] = new CO2Data(); 
} 
2

Вы получаете NullPointerException, потому что,

Вы объявили массив CO2Data dataSet[] = new CO2Data[10];, , но каждый элемент внутри этого CO2Data[] array указывает на Null.

Следовательно, этот вызов: dataSet[i].setRoadCO2(roadCO2); будет генерировать NullPointerException , потому что dataSet[i] указывает на null.

Решение:

Instantiate dataSet[i] = new CO2Data(); затем вызвать dataSet[i].setRoadCO2(roadCO2);