Java Add方法和while循环未正确执行

Java Add方法和while循环未正确执行,java,Java,这个程序是一个通讯录。有一个contact类和contact book类。当我执行案例2时,contact book类中的add方法不允许我单独输入姓名和电话号码。“输入姓名”和“输入地址”同时出现 以下是主方法中的开关情况: while (!done) { ContactBook cb = new ContactBook(); System.out.println("1) List all contacts" + "\n" + "2) Ad

这个程序是一个通讯录。有一个contact类和contact book类。当我执行案例2时,contact book类中的add方法不允许我单独输入姓名和电话号码。“输入姓名”和“输入地址”同时出现

以下是主方法中的开关情况:

    while (!done)
     {  
        ContactBook cb = new ContactBook();
        System.out.println("1) List all contacts" + "\n" + "2) Add a contact"
         + "\n" + "3) Update a contact" + "\n" + "4) Remove a contact" +
         "\n" + "5) Quit");
        userChoice = sc.nextInt();

        switch (userChoice)
        {
            case 1:
                c.toString();
                break;

            case 2:
                cb.add(sc);
                break;

            case 3:
                cb.update(sc);
                break;

            case 4:
                cb.remove(sc);

        }
        if (userChoice == 5);
        {
            done = true;
        }
     }


}
以下是contact book类中的add方法:

public void add (Scanner sc)
{
    Contact c = new Contact(name, address, phone, email);
    System.out.println("Enter a name: ");
    c.setName(sc.nextLine());
    System.out.println("Enter an address: ");
    c.setAddress(sc.nextLine());
    System.out.println("Enter a phone number: ");
    c.setPhone(sc.nextLine());
    System.out.println("Enter an email: ");
    c.setEmail(sc.nextLine());
    entries = Arrays.copyOf(entries, entries.length + 1);
}

我想这应该能解决你的问题

System.out.print("Enter a name: ");
c.setName(sc.nextLine());
System.out.println()

您需要更改以下内容:

userChoice = sc.nextInt();


nextInt
不使用输入中的新行,您需要在
nextInt()之后激发空白sc.nextLine()。在使用扫描器时,请确保为新行刷新缓冲区。下一次,请先阅读并尝试以下内容:在我提问之前,我已经尽了我所能。这个问题非常具体,只包括我需要的部分课程。我要感谢你的回答,这是非常有用的。我被卡住了,一直在书中搜索,一行一行地追踪我的程序,这就是为什么我转向堆栈以获得一个人类的视角:)好安瑟先生!
userChoice = Integer.valueOf(sc.nextLine());