2016-11-12 95 views
1

我對Java相當陌生,而且我很難理解掃描器和異常。它在「while(!line.matches(」[\ n \ r] +「))」中顯示NullPointerException。我不確定爲什麼會發生這種情況。我已初始化行變量,並假設如果掃描儀的下一行是斷行,while循環應該結束。如果下一行爲空,那麼整個外循環應該結束。爲什麼這會返回一個NullPointerException?解析Java中的文本文件 - 需要幫助理解NullPointerException

public class Readfile { 
private static int inputs = 0; 

public void main(String filename) throws Exception { 
    URL url = getClass().getResource(filename); 
    File file = new File(url.getPath()); 
    parsefile(file); 

} 

void parsefile(File file) throws Exception { 
    ArrayList<String[]> Inputs = new ArrayList<String[]>(); 
    BufferedReader br = new BufferedReader(new FileReader(file)); 
    String line = br.readLine(); 
    while (line != null){ 
     LinkedList currentinput = new LinkedList(); 
     if (line.contains("Input")){ 
      while (! line.matches("[\\n\\r]+")) { 
       System.out.println(line); 
       line = br.readLine(); 
      } 
     }else{ 
      line = br.readLine(); 
     } 
    } 
} 

}

回答

4

你的內環也叫br.readLine(),所以你需要檢查null。更改

while (! line.matches("[\\n\\r]+")) { 

喜歡的東西

while (line != null && ! line.matches("[\\n\\r]+")) { 

while (! line.matches("[\\n\\r]+")) { 
    System.out.println(line); 
    line = br.readLine(); 
    if (line == null) { 
     break; 
    } 
} 
+0

這是有道理的,謝謝! – stealingbikes