我在文本文件中编辑记录时遇到问题。代码中的逻辑是输入一个13位数字(使用cnic的唯一/变量),然后它读取文本文件。
如果该行不包含该号码,则将该行复制到另一个创建的文本文件(Voters Database2.txt)。如果是,则询问新信息,用户输入该信息,然后将该信息复制到新文本文件中。
当输入“cnic”时,它使用line.contains(...)方法搜索要搜索的记录。使用BufferedWriter Created并将条件设置为boolean,如果为false,则应将该行复制到下一个文本文件中,如果为true则请求。问题是当程序要求用户输入cnic时,当输入时,它开始进入无限循环in if。
以下是代码:
Scanner in=new Scanner (System.in);
String cnic,ncnic,vn,list,nm,age,adrs;
try (BufferedReader br = new BufferedReader(new FileReader("Voters Database.txt"))) {
BufferedWriter bw=new BufferedWriter(new FileWriter("Voters Database2.txt",true));
System.out.println("Enter Voter CNIC to edit");
cnic=in.nextLine();
String line=br.readLine();
while (line!=null){
boolean x=line.contains(cnic);
if (x==true){
System.out.println("Enter new CNIC");
ncnic=in.nextLine();
System.out.println("Enter new Voter Number");
vn=in.nextLine();
System.out.println("Enter new list no");
list=in.nextLine();
System.out.println("Enter new Voter's Name");
nm=in.nextLine();
System.out.println("Enter new Age");
age=in.nextLine();
System.out.println("Enter new Address");
adrs=in.nextLine();
line="CNIC: "+ncnic+" Vote Number: "+vn+" List No: "+list+" Name: "+nm+" Age: "+age+" Address: "+adrs;
bw.write(line);
bw.close();
}
else{
bw.write(line);
}
br.readLine();
}
}
catch(IOException e){
System.err.println("IO Exception Error");
}
答案 0 :(得分:1)
它会进入无限循环,因为它找不到line
为null,这就是原因:
你设置如下所示的行,这意味着行不会为空
String line=br.readLine();
while (line!= null) ..
现在在while循环中你永远不会将它重置为null,因此它会导致无限循环。