我创建了一个程序,它将扫描文本文件,切换某些字符,然后打印到另一个文件中。我创建了一个改变了“|”的程序到“\ t”和“\ n”到“”。有一个运行时错误,说“线程中的异常”主“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 :(得分:0)
在while
循环中添加大括号,以便在replaceAll
出现时语句不会终止
while ((line = br.readLine()) != null) { // increase scope
line = line.replace('|', '\t');
String replacedString = line.replaceAll("(\\n)", "");
bw.write(line);
}
答案 1 :(得分:0)
您的大括号{
位于while
循环的错误位置。
在while
循环条件之后没有大括号,只有它后面的第一个语句充当循环体。当你到达这一行
String replacedString = line.replaceAll ("(\\n)", "");
整个文件已被阅读且line
为null
。变化
{
while ((line = br.readLine () ) != null)
到
while ((line = br.readLine () ) != null) {