0
import easyIO.*;

class Oblig3A {

    public static void main(String[] args) {

    OrdAnalyse oA = new OrdAnalyse(args[0]);
    oA.textLeser();
    } //closes main
} //closes Oblig3 class

class OrdAnalyse {

    String[] ord = new String[5000];
    int[] antall = new int[5000];
    int antUnik = 0;
    String argu;


    OrdAnalyse(String file){

    argu = file;
    } //args relay

    void textLeser(){
        In lesText = new In(argu);
    Out nyText = new Out("oppsummering.txt" , true);

    while (!lesText.endOfFile()) {
        String reader = lesText.inWord();
        for(int i=0; i<ord.length; i++) {

        if(reader.equals(ord[i])) {
            antall[i]++;
            antUnik++;
            ord[i] = reader;
            nyText.out(ord[i]);
        } //if

        else {
            antall[i]++;

        } //else
        } //for
    }//while
    }//textLeser
}//OrdAnalyse.class

任何人都能够发现问题所在?:S 需要帮助。

我不知道它有什么问题,我尝试了很多不同的东西。:/

不知道为什么会这样:s

第 33 行 = if(reader.equals(ord[i])) {

4

1 回答 1

2

只是用不同的文件试了一下,得到了这个

Exception in thread "main" java.lang.NullPointerException
    at OrdAnalyse.textLeser(Oblig3A.java:33)
    at Oblig3A.main(Oblig3A.java:8)

根据您的评论,以下方法调用返回null

String reader = lesText.inWord();

稍后,在第 33 行,您访问该reader变量。

if(reader.equals(ord[i]))

在空对象上调用方法会抛出NullPointerException您所看到的。

最有可能的是,inWord()endOfFile()未按您预期的那样工作。您需要阅读这两种方法的文档,然后决定如何处理以下null结果inWord(): 最简单的解决方案是打破外循环,但您可能想做其他事情。

String reader = lesText.inWord();
if (reader == null) { break; }
于 2013-10-08T11:02:20.407 回答