1 回答
TA贡献1830条经验 获得超9个赞
nextInt()行为类似于next()当它读取一行时,它将光标放在该行后面。
示例:您输入 6
6
^(scanner's cursor)
所以下次你打电话的时候nextLine()。它将返回光标之后的整行,在本例中光标为空。
要解决此问题,您需要调用一个额外函数,nextLine()以便扫描仪关闭它正在读取的上一行并转到下一行。
你可以这样做
System.out.print("Please enter a choice: ");
choice = scan.nextInt(); // Reads the int
scan.nextLine(); // Discards the line
在选择 2 中,由于您想要用户的全名,因此您可以使用它nextLine()来获取整行和空格。
//Remove user
System.out.println("Please enter full name of user to remove: ");
key=scan.nextLine();
System.out.println("name:" + key);
ad1.removeContact(key);
或者您可以执行与选项 1 中类似的操作
System.out.print("Please enter firstname: ");
firstName=scan.next();
System.out.print("Please enter lastname: ");
lastName=scan.next();
key = lastName.concat(firstName);
System.out.println("name:" + key);
ad1.removeContact(key);
scan.nextLine(); // This is will make sure that in you next loop `nextInt()` won't give an input mismatch exception
添加回答
举报