1

私は宣言しました:

Discursiva[] questoesDiscursivas = new Discursiva[10];

これは:

public class Discursiva extends Questao{
    private String criteriosCorrecao;
}

そしてQuestaoは:

public class Questao {
    private String pergunta;
    private double peso;
}

だから私はちょうどしました:

str = JOptionPane.showInputDialog("Pergunta da Questao:");
questoesObjetivas[i].setPergunta(str);

そして、java.lang.NullPointerExceptionを取得しました。

oracle docsを読みました:オブジェクトが必要な場合にアプリケーションがnullを使用しようとするとスローされます。これらには以下が含まれます:

Calling the instance method of a null object. 
Accessing or modifying the field of a null object. 
Taking the length of null as if it were an array. 
Accessing or modifying the slots of null as if it were an array. 
Throwing null as if it were a Throwable value.

そして、私はなぜ私が受け取っているのかわかりませんNullPointerException。私の質問を裏付けないでください。IamはまだJavaを学習しています。これは、最初のコードのようです。助けてください。どうすればこれを修正できますか?

4

7 に答える 7

6

配列はnullsでいっぱいです。

new Discursiva()使用する前に、アレイの各スロットにを入れる必要があります。

于 2012-09-03T14:17:39.833 に答える
3

これを行う前に、questoesObjetivas[i]最初にこれを行ってください

 questoesObjetivas[i] = new Discursiva();

ここに良い記事があります。

Array of objectを宣言した場合、Arrayにはオブジェクトへの参照のみが含まれます。Arrayofobject内の各値はnullに初期化されます。だからあなたがそれにアクセスしようとするとあなたは得るでしょうNullPointerException

配列はcovariant [if Sub is a subtype of Super, then the array type Sub[] is a subtype of Super[] **Effective Java**]本質的に存在するため、ArrayList

ArrayList<Discursiva> questoesDiscursivas = new ArrayList<Discursiva>(10);
questoesDiscursivas.add(new Discursiva());

あなたはEffectiveJavaでもっと読むことができます Item 25: Prefer lists to arrays

于 2012-09-03T14:17:35.633 に答える
2

配列にオブジェクトを作成する必要があります。

Discursiva[] questoesDiscursivas = new Discursiva[10];

for (int i=0;i<10;i++){
    questoesDiscursivas = new Discursiva();
}
于 2012-09-03T14:17:38.833 に答える
1

questoesObjetivas [i]を宣言しましたが、初期化していません。

于 2012-09-03T14:20:30.533 に答える
0

作成時に、オブジェクト配列のすべての要素がに初期化されるためnull、その配列のth要素は実際に。になります。クラスのインスタンスで配列を埋めてみてください。questoesObjetivas[i].setPergunta(str)NullPointerExceptioninullDiscursiva

于 2012-09-03T14:18:24.180 に答える
0

問題を推測することはあなたが与えた2行にあります:

questoesObjetivas[i]nullまたはquestoesObjetivasnull

于 2012-09-03T14:18:45.413 に答える
0

オブジェクトをインスタンス化して、配列に配置できるようにする必要があります。

   questoesObjetivas[i] = new setPergunta(str);
于 2012-09-03T14:19:18.017 に答える