我是java初学者,正在尝试解决以下用例。 用例:从包含数字的文件(input.txt)中,找出所有唯一数字并将其写入不同的文件(output.txt),而不使用任何数据结构(数组、集合、映射等)。 对于提到的用例,我用 java 编写了以下代码:
import java.util.*;
import java.io.*;
class Merge{
public static boolean doesExist(String mobileNo) throws IOException{
BufferedReader reader = new BufferedReader(new FileReader("output.txt"));
String exist = reader.readLine();
//logging
System.out.println(exist + " " + mobileNo);
while(exist != null){
if(exist.equals(mobileNo)) return true;
exist = reader.readLine();
}
return false;
}
public static void main(String[] args) throws IOException{
PrintWriter writer = new PrintWriter("output.txt");
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
String mobileNo = reader.readLine();
while(mobileNo != null){
if(!doesExist(mobileNo)) writer.println(mobileNo);
mobileNo = reader.readLine();
}
writer.flush();
reader.close();
writer.close();
return ;
}
}
我尝试使用控制台打印进行调试,发现无法读取output.txt。 以下是logging的控制台输出:
输入如下:
请有人帮我解释为什么会发生这种情况。
错误在于,每次我决定写入数字时,我都没有将数据从流刷新到文件中。因此,每次数据在流中并且没有写入文件时,缓冲读取器每次都会读取 null。我必须补充一下:
if(!doesExist(mobileNo)){
writer.println(mobileNo);
writer.flush()
}