0

我不确定出了什么问题,但打印输出仅在第二次才完整地为我提供了 txt 文件中的信息。第一次它只会打印出我的 txt 文件中的第一行。希望有人能指出我的错误。

这是我的代码:

public static void main(String[]args) {
   try {
        FileReader fileReader = new FileReader("data_file/Contact.txt");
        BufferedReader in = new BufferedReader(fileReader);
        String currentContact = in.readLine();
        StringBuilder sb = new StringBuilder();  
        while(currentContact != null) {   
            StringBuilder current = sb.append(currentContact);
            current.append(System.getProperty("line.separator"));
            JOptionPane.showMessageDialog(null, "Contact  : \n" + current);
            // System.out.println("Contact:" + currentContact);                    
            currentContact = in.readLine();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
4

1 回答 1

1

移动

JOptionPane.showMessageDialog(null, "Contact  : \n" + current);

在您的 while 循环之外(并将其更改为使用sb而不是current)。只有在读取整个文件后才会显示对话框。现在,您正在为输入文件中的每一行显示一个对话框。

顺便说一句,您可以替换它:

StringBuilder current = sb.append(currentContact);
current.append(System.getProperty("line.separator"));

有了这个:

sb.append(currentContact);
sb.append(System.getProperty("line.separator"));

甚至在一行上做:

sb.append(currentContact).append(System.getProperty("line.separator"));

StringBuffer.append返回调用它的对象。这允许您将调用链接到append.

于 2013-05-25T04:02:41.193 回答