java - 用户输入字符串时如何重新提示用户输入有效输入(Java)
问题描述
Invalid Input
当用户输入一个字符串(例如“ ”)时,程序应该给出输出“ ” thirty
,然后提示用户输入一个有效的输入。当我输入字符串时,我Exception in thread "main" java.util.InputMismatchException
在输入字符串时收到错误消息。
public static void main(String[] args) {
double wallHeight = 0.0;
boolean valid = true;
// Implement a do-while loop to ensure input is valid
// Prompt user to input wall's height
do {
System.out.println("Enter wall height (feet): ");
wallHeight = scnr.nextDouble();
valid = true;
if (wallHeight <= 0) {
System.out.println("Invalid Input");
valid = false;
}
} while (!valid);
解决方案
InputMismatchException - 如果下一个标记与 Float 正则表达式不匹配,或者超出范围
这意味着如果用户键入非数字字符,nextDouble()
就会抛出这个异常。
为了让您的程序继续运行,您需要捕获异常并打印出错误消息。您可以通过try...catch
声明来做到这一点。我不会在这里详细介绍,因为已经有很多关于如何做到这一点的资源。
或者,您可以使用Scanner.hasNextDouble()
先检查双精度值。
我提供的链接都来自 Oracle的官方 Java API 文档。我强烈建议您熟悉这些文档。它们解释了每个标准 Java 类所需的所有细节。
推荐阅读
- libreoffice-calc - 在 Starbasic 宏中,在 LibreCalc 中,我无法将字符串作为表达式传递
- php - 如何在 WordPress 仪表板的管理栏中排列列?
- c++ - 如果函数会返回一个指向 char 数组的指针而我不会使用它怎么办?
- node.js - mocha 和 chai 测试期间的 Node.js api 端点超时
- rendering - HTML css - 谷歌浏览器和边缘是一个像素
- linux - 在添加从 RPM 移植的 pkg 后,JFrog 工件和 MergeList /var/lib/apt/lists "(NewVersion2)" 的问题
- android - Android Studio:等待设备时出错:AVD Pixel_3_API_24 的模拟器进程已终止。在配备 M1 芯片的 Mac Book Pro 上
- java - 与某些 SMTP 服务器的连接时间很长
- python - tkinter - 列表没有得到任何数据
- c# - 如何在命令行上显示 C#(分析器)建议?