如何在用户输入字符串时重新提示用户进行有效输入 (Java)
How to reprompt user to put a valid input when user inputs a String (Java)
当用户输入字符串(例如“thirty
”)时,程序应该给出输出“Invalid Input
”,然后提示用户输入有效的输入。当我输入字符串时,输入字符串时收到错误消息 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);
根据the documentation for Scanner.nextDouble()
:
InputMismatchException - if the next token does not match the Float regular expression, or is out of range
这意味着如果用户输入非数字字符,nextDouble()
将抛出这个异常。
为了让您的程序继续,您需要捕获异常并打印出错误消息。您可以使用 try...catch
语句执行此操作。我不会在这里详细介绍,因为已经有很多关于如何执行此操作的资源可用。
或者,您可以先使用 Scanner.hasNextDouble()
检查双精度值。
我给的链接都是来自Oracle的the official Java API documentation。我强烈建议您熟悉这些文档。他们解释了每个标准所需的所有细节 Java class.
当用户输入字符串(例如“thirty
”)时,程序应该给出输出“Invalid Input
”,然后提示用户输入有效的输入。当我输入字符串时,输入字符串时收到错误消息 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);
根据the documentation for Scanner.nextDouble()
:
InputMismatchException - if the next token does not match the Float regular expression, or is out of range
这意味着如果用户输入非数字字符,nextDouble()
将抛出这个异常。
为了让您的程序继续,您需要捕获异常并打印出错误消息。您可以使用 try...catch
语句执行此操作。我不会在这里详细介绍,因为已经有很多关于如何执行此操作的资源可用。
或者,您可以先使用 Scanner.hasNextDouble()
检查双精度值。
我给的链接都是来自Oracle的the official Java API documentation。我强烈建议您熟悉这些文档。他们解释了每个标准所需的所有细节 Java class.