2014-11-14 25 views
-1

我已經創建了一個程序,它將掃描文本文件,切換某些字符並打印到另一個文件中。我創建了一個改變「|」的程序到「\ t」和「\ n」到「」。這裏有一個運行時錯誤的說法,「異常線程‘main’顯示java.lang.NullPointerException 在Nov5.main(Nov5.java:20)」掃描文件並替換字符

如果有人知道如何糾正這一錯誤,並得到我的程序跑步,那會很棒。非常感謝!

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.BufferedWriter; 

public class Nov5 
{ 

public static void main(String args[]) 
{ 

    try 
    { 

     BufferedReader br = new BufferedReader(new FileReader("OneRecord.fna")); 
     BufferedWriter bw = new BufferedWriter(new FileWriter("OneLineRecord.faa")); 

     String line; 
     { 
      while ((line = br.readLine()) != null) 
      line = line.replace ('|' , '\t'); 
      String replacedString = line.replaceAll ("(\\n)", ""); 
      bw.write(line); 

     } 
     br.close(); 
     bw.close(); 
    } 
    catch(IOException e) 
    { 
     System.out.println("error"); 
    } 
} 
} 
+0

注意:不要使用'replacedString'(可能是錯字)。因此,刪除'\ n'的邏輯不起作用。 – ajb

回答

0

添加括號到您的while循環,使該聲明未終止時replaceAll發生

while ((line = br.readLine()) != null) { // increase scope 

    line = line.replace('|', '\t'); 
    String replacedString = line.replaceAll("(\\n)", ""); 
    bw.write(line); 
} 
0

你在錯誤的地方你開括號{while循環。

while循環條件之後沒有大括號,只有它作爲循環體的第一條語句。到時候你到該行

String replacedString = line.replaceAll ("(\\n)", ""); 

整個文件已經閱讀並linenull。更改

{ 
    while ((line = br.readLine()) != null) 

while ((line = br.readLine()) != null) {