我正在尝试使用BufferedReader
读取文件列表,并确定是否有重复文件,如果是,则不打印它们。我知道有一个名为“UniqueLineReader”的SuperClass可以为你检查重复行的出现,以及其他一些名为Linked HashSet
的行。但是,我没有在课堂上学到这些,所以我试图不使用它们。
无论如何,e.getMessage()打印“null”,我不明白,因为文件显然不是,我正在检查它不是。我有错误的变量放置吗?
try {
inFile = new BufferedReader(new FileReader(inputName));
outFile = new PrintWriter(new FileWriter(outputName));
while((nextLine = inFile.readLine())!= null){
if(indexOf(nextLine) == -1){
insert(nextLine);
outFile.println(nextLine);}
else{
System.out.println(nextLine + " has been seen before!");
}
}
inFile.close();
}//try
catch(Exception e){
System.out.println(e.getMessage());
}//catch
我的indexOf
方法:
private int indexOf(String newWord){
for(int i = 0; i < numWords; i++){
if(arrayStrings[i].equals(newWord)){
return i;
}
}
return -1;
}//indexOf
stacktrace
`显示java.lang.NullPointerException 在A2Q2.indexOf(A2Q2.java:58) 在A2Q2.removeDuplicateLines(A2Q2.java:79) 在TestA2Q2.main(TestA2Q2.java:10)
答案 0 :(得分:0)
根据堆栈跟踪,问题出现在文件A2Q2.java的第58行,在那一行你正在使用它:
arrayStrings[i].equals(...)
这意味着arrayStrings
为空,或arrayStrings[i]
为空。
在该行之前添加一个简单的System.out.println
(或使用调试器)将向您显示确切的错误。
顺便说一句:我发现你使用固定大小的数组而不是ArrayList
来保存线条,我推荐后者在这种情况下,因为你不需要事先指定最大行数。