当字符串标记为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是双倍的,所以我猜我的程序变得混乱了?我如何解决它?非常感谢!
答案 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行得到了一个NullPointerException。这是因为数据'data'尚未初始化。
您可以按如下方式初始化数组
for(int i = 0; i < dataSet.length; i++) {
dataSet[i] = new CO2Data();
}