有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java扫描文件并替换字符

我创建了一个程序,可以扫描一个文本文件,切换某些字符,然后打印到另一个文件中。我创建了一个程序,将“|”更改为“\t”,将“\n”更改为“”。有一个运行时错误,表示“线程中的异常”main“java.lang.NullPointerException 11月5日。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" );
    }
}
}

共 (2) 个答案

  1. # 1 楼答案

    开始括号{放在了while循环的错误位置

    如果在while循环条件之后没有大括号,则只有它之后的第一条语句充当循环体。当你到达这条线的时候

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

    整个文件已被读取,并且linenull。改变

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

    while ((line = br.readLine () ) != null) {
    
  2. # 2 楼答案

    将大括号添加到while循环中,以便在发生replaceAll时语句不会终止

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