首页 > 解决方案 > 用户输入字符串时如何重新提示用户输入有效输入(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);  

标签: javaeclipsevalidationinputdouble

解决方案


根据以下文档Scanner.nextDouble()

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

这意味着如果用户键入非数字字符,nextDouble()就会抛出这个异常。

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

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

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


推荐阅读