如何在用户输入字符串时重新提示用户进行有效输入 (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.