java - 扫描仪需要输入两次才能继续
问题描述
嘿伙计们,我在这里遇到了一个奇怪的小问题,我要求用户输入他们的菜单选择,并根据他们选择的内容调用某种方法。
经过一番谷歌搜索后,我使用了scanner.next(),但由于某种原因,只有当我输入1或2时,我按回车,然后再次按说1,然后它才真正起作用。但奇怪的是,它立即调用选项 3、4、5 和 6,而无需我输入两次数字。
我在scanner.nextInt()之后尝试了scanner.nextLine(),这让我不得不将我的选项1或2放入没有结果。
while(exit == 0)
{
System.out.println("\n");
System.out.println("Menu 1: Display fullname of the user \n");
System.out.println("Menu 2: Display of user information \n");
System.out.println("Menu 3: Change password \n");
System.out.println("Menu 4: List all of users in the library full name\n");
System.out.println("Menu 5: Search for a book\n");
System.out.println("Press 6 to search for a books location in the library\n");
System.out.println("Press 0 to exit\n");
System.out.println("Enter choice: ");
int menuChoice = scanner.nextInt();
scanner.next();
if(menuChoice == 1)
{
displayUserFullName();
}
else if(menuChoice == 2)
{
displayUserInformation();
}
else if(menuChoice == 3)
{
menuForChangePassword();
}
else if(menuChoice == 4)
{
displayAllUserInSystem();
}
else if(menuChoice == 5)
{
searchBookByISBN();
}
else if(menuChoice == 6)
{
searchBookLocation();
}
else if(menuChoice == 0)
{
exit = 1;
}
}
先感谢您!
解决方案
int menuChoice = scanner.nextInt();
scanner.next();
阅读扫描仪的javadoc。它等待用户输入:
public String next(): [..] 这个方法在等待输入扫描时可能会阻塞
所以在你的程序中,你说:等待用户输入和 int,然后等待用户输入一些东西。
删除scanner.next();
它应该可以工作。
推荐阅读
- java - JPA SQL 查询以获取给定输入名称的最大列
- azure - SSL:证书管理器 + Istio + Kubeflow + Azure + LetsEncrypt
- java - PRNG 多线程,具有确定性结果
- google-analytics - 是否可以构建一个报告来跟踪 Goolge Analytics 中所有视图中的所有过滤器?
- angular - 具有 Observable 的字典对象:无法读取未定义的属性“下一个”
- mysql - Kafka Streams 合并来自 MySQL CDC 的三个流
- c# - 设置缓存将波浪线添加到资源路径
- matlab - MATLAB:如何将具有相同大小字段值的结构体数组组合成一个结构体
- apache-camel - apache camel:在 xslt 中生成随机数字 ID
- c++ - 功能有什么问题