2013-12-10 33 views
1

使用以下代碼將讀取器的輸出分割爲隨後在構造函數中使用的字符串。但是,當bufferreader到達流的末尾時,它輸出null,然後在構造函數中導致空指針異常。如何禁止BufferReader的空輸出?

List<Pattern> resultList = new LinkedList<Pattern>(); 
    BufferedReader buff = new BufferedReader(r); 
    String current; 
    while (buff != null) { 
     current = buff.readLine(); 
     System.out.println(current); 
     Pattern p = new Pattern(current); 
     resultList.add(p); 

     } 
    return resultList; 

我試圖把一個if測試語句,如果當前字符串爲空,但我不知道該放什麼,如果從句的身體。任何幫助將不勝感激

回答

2

buff永遠不會爲空 - 它是readLine的返回值,當您到達數據末尾時它爲null。 這就是你需要檢查什麼,通常用代碼將值賦給變量並一次性檢查:

String current; 
while ((current = buff.readLine()) != null) { 
    System.out.println(current); 
    Pattern p = new Pattern(current); 
    resultList.add(p); 
} 
1

而不是把一個ifwhile的,改變你的循環從條件:

while (buff != null) 

到:

while ((current = buff.readLine()) != null) 

buff不會成爲null作爲達到流結束的結果,但當沒有更多輸入要返回時,current將變爲null