0

当字符串标记是 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 是双倍的,所以我猜我的程序很混乱?我如何解决它?非常感谢!

4

3 回答 3

2

你得到 NullPointerException 因为,

您已经声明了一个 Array CO2Data dataSet[] = new CO2Data[10];,但其中的每个元素CO2Data[] array都指向 Null。

因此,这个调用:dataSet[i].setRoadCO2(roadCO2);将生成一个NullPointerException 因为dataSet[i]指向null

解决方案 :

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

于 2012-04-04T05:09:53.990 回答
1

我建议将方法的参数名称更改为与类数据成员“roadCO2”稍有不同的名称。这可能会帮助您解决错误:)

于 2012-04-04T04:04:17.183 回答
1

当我运行你的代码时,我在第 22 行得到了 NullPointerException。这是因为数组“数据”尚未初始化。

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

for(int i = 0; i < dataSet.length; i++) {
    dataSet[i] = new CO2Data();
}
于 2012-04-04T04:06:28.443 回答