尝试/捕获错误异常返回null

时间:2015-02-27 21:15:08

标签: java exception bufferedreader

我正在尝试使用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)

1 个答案:

答案 0 :(得分:0)

根据堆栈跟踪,问题出现在文件A2Q2.java的第58行,在那一行你正在使用它:

 arrayStrings[i].equals(...)

这意味着arrayStrings为空,或arrayStrings[i]为空。

在该行之前添加一个简单的System.out.println(或使用调试器)将向您显示确切的错误。

顺便说一句:我发现你使用固定大小的数组而不是ArrayList来保存线条,我推荐后者在这种情况下,因为你不需要事先指定最大行数。