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 が double であるため、プログラムが混乱していると思いますか? どうすれば修正できますか?本当にありがとう!

4

3 に答える 3

2

NullPointerException を取得しています。

の配列を宣言しましたが、CO2Data dataSet[] = new CO2Data[10];この中のすべての要素がCO2Data[] arrayNull を指しています。

したがって、この呼び出し:は を指している ためdataSet[i].setRoadCO2(roadCO2);、 を生成します。NullPointerExceptiondataSet[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 に答える