将字符串解析为double

时间:2012-04-04 03:54:27

标签: java parsing

当字符串标记为int时,我的代码似乎不起作用。这是:

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 个答案:

答案 0 :(得分:2)

您收到NullPointerException,因为

你已经声明了一个CO2Data dataSet[] = new CO2Data[10];的数组, 但是这个CO2Data[] array中的每个元素都指向Null。

因此,此次通话:dataSet[i].setRoadCO2(roadCO2);将生成NullPointerException 因为dataSet[i]指向null

解决方案:

实例化dataSet[i] = new CO2Data(); 然后拨打dataSet[i].setRoadCO2(roadCO2);

答案 1 :(得分:1)

我建议将参数名称更改为与类datamember“roadCO2”略有不同的参数。这可能有助于您理清错误:)

答案 2 :(得分:1)

当我运行你的代码时,我在第22行得到了一个N​​ullPointerException。这是因为数据'data'尚未初始化。

您可以按如下方式初始化数组

for(int i = 0; i < dataSet.length; i++) {
    dataSet[i] = new CO2Data();
}
相关问题