Java 为什么我的程序不显示多行数据

Java 为什么我的程序不显示多行数据,java,Java,我尝试输入多行联系人,但它只显示第一个联系人。我输入一个名称,后跟一个数字。我同意再联系一个联系人,然后输入第二个姓名和号码。现在我说没有更多的联系人,它只打印第一个联系人。我需要能够打印我的所有联系人 import java.io.FileNotFoundException; import javax.swing.JOptionPane; public class PhoneBook { public static void main(String[] args) throws Fi

我尝试输入多行联系人,但它只显示第一个联系人。我输入一个名称,后跟一个数字。我同意再联系一个联系人,然后输入第二个姓名和号码。现在我说没有更多的联系人,它只打印第一个联系人。我需要能够打印我的所有联系人

import java.io.FileNotFoundException;
import javax.swing.JOptionPane;

public class PhoneBook {
    public static void main(String[] args) throws FileNotFoundException {
        String contact;
        int moreContact=1;
        int choice = JOptionPane.showConfirmDialog(null, "Do you want to add a new contact?");
        int i = 0;
        java.io.File c = new java.io.File("contacts.txt");
        java.io.PrintWriter b = new java.io.PrintWriter(c);

        if (choice == 0) {
            do {
                String name = JOptionPane.showInputDialog("Contact Name: ");
                String number = JOptionPane.showInputDialog("Contact Number: ");

                contact=(name + " "+ number);
                b.println(contact);
                b.close();
                moreContact = JOptionPane.showConfirmDialog(null,"Do you have another contact?");
            } while (moreContact==0);
        }

        java.io.File h = new java.io.File("contacts.txt");
        java.util.Scanner list = new java.util.Scanner(h);
        while (list.hasNext()) {
            System.out.println(list.nextLine());
        }
    }
}

在do中接受一个联系人后关闭文件。。while循环:


看到一个联系人并不奇怪。改为在循环外部关闭该文件。

在do中接受一个联系人后关闭该文件。。while循环:


看到一个联系人并不奇怪。改为在循环外关闭它。

你可以在写一行后关闭你的书写器!你。写一行字后,关闭你的书写器!如果我不关闭它,它将不会显示任何联系人。哪里是关闭它的合适位置?据我所知,没有方法可以重新打开它。您可以关闭它,但在do while循环之后。它会显示联系人如果我不关闭它,它不会显示任何联系人。哪里是关闭它的合适位置?据我所知,没有方法可以重新打开它。您可以关闭它,但在do while循环之后。它应该显示联系人
b.close();