我知道NullPointerExceptions是你尝试提供它没有的0个属性时得到的。但为什么我在这里得到一个nullpointerexception?它说这应该是代码的这一部分:
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();
}
}
}
stacktrace:
java.lang.NullPointerException
at OrdAnalyse.analyseMetode(Oblig3A.java:39)
at Oblig3A.main(Oblig3A.java:9)
我现在已经确认它确实是有问题的行,但是
答案 0 :(得分:0)
假设innfil
是Scanner
:
尝试使用innfil.hasNextLine()
代替innfil.hasNext()
。
答案 1 :(得分:0)
你在这里创建一个String数组
ord=new String[5000];
但永远不要初始化数组中的任何字符串。
所以这一行
}else if(!ord[j].equals(fortelling[i])){
如果条件fortelling[i].equals(ord[j])
失败,将抛出NPE,这将是它的要求
'fortelling[i]
是否等于null
'它不能或者是投掷NPE的罪魁祸首
如果对此
的陈述,你可以改变你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])