我正在寫一個程序,它將一系列分成標記的單詞讀入文本,然後統計它們的頻率。此代碼有幾個相關的代碼(WordCount,FreqStudy和Echo),但是WordFreq類是導致java.lang.NullPointerException錯誤的原因。這裏是我的WordFreq代碼:java.lang.NullPointerException,不知道爲什麼?
import java.util.*;
import java.io.*;
public class WordFreq extends Echo{
WordCount[] wcArray;
int ct;
String[] sentence;
double freq;
String newLine;
public WordFreq(String f, String words) throws IOException{
super(f);
String[] wordString = words.split(" ");
for(int i=0; i<wordString.length; i++)
wcArray[i] = new WordCount(wordString[i]);
Scanner scan = new Scanner(new FileReader(fileName));
}
public void processLine(String line){
newLine = line.toLowerCase();
sentence = newLine.split(" ");
for(String s: sentence){
for(WordCount w: wcArray){
if(w.getWord().equals(s))
w.incCount();
}
ct++;
}
}
public void reportFrequencies(){
for (int i=0; i<wcArray.length; i++){
freq = (wcArray[i].getCount()/ct);
System.out.print(wcArray[i].getWord()+" ");
System.out.printf("%6.4f\n", freq);
}
}
}
我收到看起來像這樣的錯誤時,我給它一個文件通過FreqStudy主類閱讀:
java.lang.NullPointerException
at WordFreq.<init>(WordFreq.java:17)
at FreqStudy.main(FreqStudy.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
我真的不明白是什麼問題是,我一整天都在爲此工作,所以我感覺腦死亡。請看看,如果可以的話,我會很感激。
編輯:我意識到我沒有初始化發佈後,但我的頻率返回0結果。任何人幫助?
它返回0,並獲得計數返回0,以及 –
啓動雙克拉= 0.0或1.0和調試代碼爲什麼getCount將返回0。 – Smit
@EmmaHyde如果調試不工作,創建另一個職位包括'WordCount'類以及如何調用'WordFreq'中的方法。 – Reimeus