0

ということで、プログラミングの課題で困っています。必要なクラスを作成し、完全にコンパイルしましたが、実行すると NullPointerException が発生します。

すべての例外は、このメソッドを指しています。

public void initializeCount(){
for(int j=0; j<t.length; j++){
 String s=t[j];
 WordCount h=new WordCount(s);
 xx[j]=h;
}
}

xx[] は関連するオブジェクト (WordCount) の配列であり、クラスの最初に定義されています (これが何と呼ばれているのか思い出せません。プログラミングはまだ初めてです)。

public class WordFreq extends Echo{
  private String wordString;
  private String[] t;
  private WordCount[] xx;
  private int words=0;
  Scanner scan;
 }

t は文字列オブジェクトの配列で、コンストラクターに入力されます

public WordFreq (String x, String y) throws IOException{
super(x);
wordString=y;
t=wordString.split(" ");
scan = new Scanner(new FileReader(fileName));
}

initializeCount メソッドに戻ると、t[] に保持されている単語を取得し、それらを WordCount オブジェクトに変換してから、それらのオブジェクトを xx[] に配置します。

編集:クラスの最初にxxを初期化したと確信していますが、間違っている可能性があります:

public class WordFreq extends Echo{
private String wordString;
private String[] t;
private WordCount[] xx;
private int words=0;
Scanner scan;
}

initializeCount メソッドが NullPointerException を引き起こしている理由を誰かが説明できれば、それを修正してプログラムを正しく動作させることができるはずです。必要に応じて、プログラムのコードをさらに提供できます。

4

3 に答える 3

0

オブジェクト「t」はどこかで初期化されましたか

以下のように初期化メソッドを変更して、オブジェクト t の印刷内容を確認できますか。オブジェクト t が null であると思われます。nullポインター例外を防ぐために、nullチェックも追加しました。

public void initializeCount(){
System.out.println("What is the value of t --->"+t);
if(t!= null){
for(int j=0; j<t.length; j++){
 String s=t[j];
 WordCount h=new WordCount(s);
 xx[j]=h;
}
}
}
于 2013-04-12T18:00:06.987 に答える