我有 Contact
课,它工作正常。要添加联系人,我使用下面的代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("ADD NEW CONTACT");
System.out.println("\tEnter name of contact:");
String name = scanner.nextLine();
System.out.println("\tEnter number of contact:");
String number = scanner.nextLine();
Contact contact = new Contact();
contact.add(name, number);
}
}
问题是它忽略了第一次扫描并跳到 Enter number of contact
我知道 scanner.next()
会解决这个问题,但我希望联系人的姓名有空格
答案 0 :(得分:0)
问题不是真的扫描器跳过它,而是你不够快:)!但是,这不是您,您必须以每毫秒大约 100 个字的速度输入才能完成此操作! 这是发生的事情:
Scanner scanner = new Scanner(System.in);
您创建了一个扫描仪。
System.out.println("ADD NEW CONTACT");
您打印 ADD NEW CONTACT
。
System.out.println("\tEnter name of contact:");
您打印 Enter name of contact:
。
String name = scanner.nextLine();
扫描仪在此 println 的纳秒内进行扫描。 你太慢了:)!
System.out.println("\tEnter number of contact:");
它打印出Enter number of contact:
在您意识到自己有机会对第一个提示做出反应之前。
String number = scanner.nextLine();
它现在耐心等待,因为它无事可做。您现在可以用您的凡人反应输入联系电话。
那么你怎么能把电脑放慢到凡人的速度呢? 以下是三种解决方案:
在“姓名”下创建第一个扫描仪,在“联系人”下创建另一个扫描仪。 在使用第一个扫描器之前,不会运行第二个扫描器。
使用一个扫描仪创建一个多行流程,该流程需要两行,不以“打印这个”和“打印那个”分隔。
使用 Thread.sleep(),它会暂停以让用户有时间进入:
System.out.println("\tEnter name of contact:");
String name = scanner.nextLine();
Thread.sleep(3000)//3000 milliseconds = 3 seconds, or however long you want
System.out.println("\tEnter number of contact:");
这会使进程在您指定的毫秒内休眠,以便下一个 println 在该时间过去之前不会执行。这样,您就可以输入联系人姓名,而无需计算机以闪电般的速度运行。