我无法在文本文件中编辑记录。语言:JAVA IDE:NETBEANS

时间:2015-12-26 14:27:13

标签: java netbeans error-handling runtime-error

我在文本文件中编辑记录时遇到问题。代码中的逻辑是输入一个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");
    }

1 个答案:

答案 0 :(得分:1)

它会进入无限循环,因为它找不到line为null,这就是原因:

你设置如下所示的行,这意味着行不会为空

String line=br.readLine();
while (line!= null) ..

现在在while循环中你永远不会将它重置为null,因此它会导致无限循环。