1

double の配列を含むオブジェクトがあります。

public class NumberRow {

static final int MAX_AMOUNT_OF_NUMBERS = 2500;
double[] NumberArray = new double[MAX_AMOUNT_OF_NUMBERS];

NumberRow(double[] NumberArray){
    this.NumberArray = NumberArray;
}

}

私のメインプログラムでは、このようにコンストラクターでオブジェクト NumberRow の配列を作成することから始めます

NumberRow[] numberRow;

プログラムの後半で、次のコードを挿入しました。

numberRow = new NumberRow[dataset.numberOfVariables];

その後、numberRow に値を与える関数を呼び出します。

double misc = in.nextDouble();
numberRow[k].NumberArray[i] = misc;

NumberRow が指している場所は言いました。ただし、Eclipse では、次の行でヌル ポインター ポインター例外が発生します。

numberRow[k].NumberArray[i] = misc;

私が間違ったことを誰かが見てくれることを願っていますか?ありがとうございました :)!

4

2 に答える 2

1

これは、初心者がオブジェクトの配列を使い始めるときによく見られる間違いです。オブジェクト参照の配列が作成されると、配列は初期化されますが、配列内の個々の要素はnull. したがって、ステートメントnumberRow[k].NumberArray[i] = misc;numberRow[k]null、 is であり、これが例外を引き起こしています。したがって、行の前にステートメントを配置する必要があります

numberRow[k] = new NumberRow();

上記のステートメントの前に。

于 2013-06-05T00:18:26.097 に答える
1

これを行う場合:

numberRow = new NumberRow[dataset.numberOfVariables];

配列のすべてのメンバーはnumberRow、デフォルト値の に初期化されますNumberRowNumberRowはクラスであるため、デフォルト値は null です。null に値を設定するには、最初にそれをnew実際のオブジェクトに初期化する必要があります。そうしないと、NullPointerException が発生します。

于 2013-06-05T00:16:04.927 に答える