1

私はJavaに少し慣れていないので、オブジェクト配列の操作に問題がありました。答えはおそらくかなり単純ですが、わかりません。

Vectorsという名前のクラスとset_components()という名前の関数があります。私がやろうとしているのは、次のようなオブジェクトの配列を作成することです。

Vectors[] vec = new Vectors[2];

//次に、次のような関数にアクセスします。

vec[0].set_components();

ただし、次のエラーが発生します。スレッド「main」の例外java.lang.NullPointerExceptionなぜですか?

これを1つのオブジェクトに対して行うだけで機能します。

Vector vec = new Vector();
vec.set_components();
4

3 に答える 3

5

配列は作成されましたが、null参照で何も満たされていません。配列をインスタンスで埋める前に配列内のアイテムを使用しようとすると、表示されているとおりにNPEが取得されます。卵箱のようなオブジェクト配列を考えてみてください。オムレツを作る前に、まず卵(ベクターオブジェクト)を入れる必要があります。多くの場合、これはforループで行われます。

for (int i = 0; i < vectors.length; i++) {
  vectors[i] = new Vector();
}
于 2013-02-19T03:29:42.333 に答える
3

それらのそれぞれをVectors初期化する必要があります

このような:

for(int i = 0; i < vec.length; i++){
    vec[i] = new Vector();
}

Vectors[] vec = new Vectors[2]lineは、「Vectors」オブジェクトではなく、2つの「Vectors」参照を作成します。

それらのそれぞれはnull最初に参照します。次に、たとえばの参照をnull参照しようとするvec[0]vec[0].set_components();、JVMは「しばらくお待ちください。vec[0]がnullポイントしています。逆参照できません。NullPointerExceptionという例外をスローします」と表示されます。

于 2013-02-19T03:30:07.413 に答える
0

Javaオブジェクトは、式、変数、引数、または配列要素として表示されることはありません。プリミティブでない場合は、参照です。参照はnull、またはオブジェクトへのポインタのいずれかです。

null参照の配列を作成しました。配列の各要素を変更して、Vectorsオブジェクトへのポインターにする必要がありますvec[0] = new Vectors();

于 2013-02-19T03:33:22.983 に答える