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

3

xx 数组是否在某处初始化?

于 2013-04-12T00:03:19.343 回答
1

您没有初始化 xx 我认为您希望将 xx 初始化为 t 的大小,所以请执行以下操作

  xx = new WordCount[t.length];
于 2013-04-12T00:04:16.557 回答
0

对象“t”是否在某处初始化

您可以如下更改您的初始化方法并检查对象 t 的打印内容吗?我怀疑对象 t 为空。我还添加了一个空检查以防止空指针异常。

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 回答