【问题标题】:How to reprompt user to put a valid input when user inputs a String (Java) [duplicate]当用户输入字符串(Java)时如何重新提示用户输入有效输入
【发布时间】:2021-08-25 19:01:26
【问题描述】:

当用户输入一个字符串(例如“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);  

【问题讨论】:

    标签: java eclipse validation input double


    【解决方案1】:

    根据the documentation for Scanner.nextDouble():

    InputMismatchException - 如果下一个标记与 Float 正则表达式不匹配,或者超出范围

    这意味着如果用户输入非数字字符,nextDouble() 将抛出此异常。

    要让您的程序继续运行,您需要捕获异常并打印出错误消息。您可以使用try...catch 语句来执行此操作。我不会在这里详细介绍,因为已经有很多关于如何做到这一点的资源。

    或者,您可以先使用Scanner.hasNextDouble() 检查双精度值。

    我提供的链接均来自 Oracle 的 the official Java API documentation。我强烈建议您熟悉这些文档。它们解释了每个标准 Java 类所需的所有细节。

    【讨论】:

    • 添加应该可以工作的try catch try{ //这里的代码do while} catch (Exception e) { sout(e);}
    • @KostandinVllahu 或者在这种情况下,最好打印出自定义错误消息而不是异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多