0

我知道 NullPointerExceptions 是您在尝试提供它没有的 0 属性时得到的东西。但是为什么我在这里得到一个空指针异常?它说它应该在这部分代码上:

    class Oblig3A{
    public static void main(String[]args){

    OrdAnalyse oa = new OrdAnalyse();
    String filArgs=args[0];
    oa.analyseMetode(filArgs);
    }
}

class OrdAnalyse{
    void analyseMetode(String filArgs){

    //Begynner med aa opprette alle variabler som trengs, disse deklareres rett under. De ligger her oppe bare for at jeg skal ha oversikten over de.
    Scanner input, innfil;
    String[] ord, fortelling;
    int[] antall;
    int antUnikeOrd;
    PrintWriter utfil;

    //Deklarerer alle bortsett fra de som har med fil aa gjore, disse deklareres inne i en try-catch-loop (printwriter utfil og scanner innfil).
    input=new Scanner(System.in);
    ord=new String[5000];
    antall=new int[5000];
    antUnikeOrd=0;

    try{
        innfil=new Scanner(new File(filArgs));
        //Naa skal jeg dele opp prosessen litt for aa faa inn funksjonaliteten for aa for eksempel sette alle ord til lowercase.

        while(innfil.hasNext()){
        fortelling=innfil.nextLine().toLowerCase().split(" ");
            for(int i=0; i<fortelling.length; i++){
               for(int j=0; j<5000; j++){
               if(fortelling[i].equals(ord[j])){
                   antall[j]+=1;
               }else if(!ord[j].equals(fortelling[i])){ //This is line 39
                   ord[j]=fortelling[i];
                   antall[j]+=1;
                   antUnikeOrd+=1;
               }
               System.out.print(fortelling[i]);
               System.out.print(fortelling.length);
               }
           }
           }
       }catch(Exception e){
           e.printStackTrace();
       }
    }
 }

堆栈跟踪:

java.lang.NullPointerException
    at OrdAnalyse.analyseMetode(Oblig3A.java:39)
    at Oblig3A.main(Oblig3A.java:9)

我现在已经确认它确实是有问题的线,虽然

4

2 回答 2

0

假设innfilScanner

尝试innfil.hasNextLine()代替innfil.hasNext().

于 2013-10-17T00:34:00.070 回答
0

你在这里创建一个字符串数组

ord=new String[5000];

但永远不要初始化数组中的任何字符串。

所以这条线

}else if(!ord[j].equals(fortelling[i])){

如果条件fortelling[i].equals(ord[j])失败,将抛出 NPE,它将作为它的询问“是否fortelling[i]等于null”它不能或它是抛出 NPE 的罪魁祸首


你可以改变你的 if 声明

if(fortelling[i].equals(ord[j]))
      antall[j]+=1;
else   // remove your if statement here
{
      ord[j]=fortelling[i];
      antall[j]+=1;
      antUnikeOrd+=1;
}

好像这fortelling[i].equals(ord[j]是假的就等于说这个if(!ord[j].equals(fortelling[i])

于 2013-10-17T00:48:23.267 回答