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

use*_*390 1 java

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

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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

dev*_*ull 7

do .. while()循环中接受一个联系人后关闭该文件:

b.close();
Run Code Online (Sandbox Code Playgroud)

没有惊喜,你看到一个联系人.改为在循环外部关闭它.