java - Java - 如何在不使用 while 循环的情况下检查扫描器输入是否为整数?
问题描述
我为我的一项作业编写了一个程序,该程序要求将输入分配给一个整数变量。赋值的其中一个部分是,如果整数输入不是 1、2、3 或 4,程序应该打印一条语句,说明这是一个无效输入,然后结束程序。
如果用户输入高于 4 或低于 1 的输入,我已经知道如何让它打印此语句,但我不知道如何在输入双精度时获得相同的结果。
我已经设法通过使用一个检查输入是否为整数的while循环来使其工作,
while (!input.hasNextInt()){
System.out.println("Invalid choice. Good-bye.");
input.next();
}
int selection = input.nextInt();
我希望它能够将其识别为无效输入,然后在此处结束程序。相反,它等待用户的另一个有效输入
根据分配的预期结果:“如果用户输入的不是 1、2、3 或 4,程序应该打印,“无效的选择。再见。” ”
解决方案
您没有提到输入有效数字或用户输入除整数以外的任何内容时会发生什么。
因此,当用户输入非整数值或不介于 1 和 4 之间的整数时,此代码将退出程序:
Scanner input = new Scanner(System.in);
int number = 0;
boolean valid = false;
System.out.println("Enter number: ");
if (input.hasNextLine()) {
if (input.hasNextInt()) {
number = input.nextInt();
if (number >= 1 && number <= 4) {
valid = true;
System.out.println("Valid choice:" + number);
}
}
input.nextLine();
if (!valid) {
System.out.println("Invalid choice. Good-bye.");
System.exit(0);
}
}
推荐阅读
- nginx - NGINX 支持更改文件夹名称
- azure-devops-rest-api - ADO API:构建列表不完整列表
- .net-5 - 为什么 dotnet --list-sdks 不显示 Windows 10 上已安装的 SDK?
- reactjs - 使用 React 上下文的 AWS Amplify 保护路由
- xcode - Xcode 生成无法编译的项目模板
- python - 如果其中一列大于 0,则创建一个布尔列
- mysql - 如何让 liquibase cli 回滚由另一个应用程序启动的 changeSets?
- reactjs - useEffect 功能正在工作,但在第一次单击时不呈现
- mysql - 事务:如何使它们与 FireDAC 和 mySQL 一起使用?
- python - 洞察一个循环