java - 如果输入的不是数字则显示错误消息

标签 java eclipse

如果有人输入除数字以外的任何内容(例如“*”/“xyz”)作为 a、b 的值,我在查找如何显示“无效输入再见”消息时遇到问题,我制作的二次计算器中的c

    DecimalFormat df = new DecimalFormat("0.00#");
    Scanner sc = new Scanner(System.in);

    Double a,b,c;
    System.out.println("Welcome to the Grand Quadratic Calculator ! ");
    System.out.print("Enter value of a = ");
    a = sc.nextDouble();
    System.out.print("Enter value of b = ");
    b = sc.nextDouble();
    System.out.print("Enter value of c = ");
    c = sc.nextDouble();
    double xone = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 * a;
    double xtwo = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 * a;

        if(b * b - 4 * a * c >= 0)
        {
            System.out.println("x1 = " + df.format(xone));
            System.out.print("x2 = " + df.format(xtwo));
        }

        else
            System.out.print("Invalid Input. \nGood Bye.");

最佳答案

当用户输入无效输入时,sc.nextDouble()将抛出InputMismatchException。 这会让你当前的程序崩溃, 永远不会到达打印“无效输入”消息的代码。

您可以将代码包装在 try block 中,并捕获此异常:

try {
    System.out.print("Enter value of a = ");
    a = sc.nextDouble();
    // ...
} catch (InputMismatchException e) {
    System.out.print("Invalid Input. \nGood Bye.");
    // return or exit with failure
}

“再见”消息表明您希望因输入无效而退出。

如果您实际上不想退出,那么您可以将用户输入部分和 try-catch block 包装在循环内,并进行有限或无限的重试。

关于java - 如果输入的不是数字则显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703297/

相关文章:

java - Java 6/1.6 OS X 10.10 Yosemite 的 JVM 路径在哪里?

\p{Punct} 上的 Java Regex 帮助

java - 如何将类型化集合从 clojure 传递到 java?

java - 一对多引用使用继承映射映射的实体会导致插入,然后更新查询

java - 查找 Long(在列表中)是否适合 Long 值列表

在本地机器上使用 Eclipse 和远程调试的 Java 热交换

java - 当我的 JAR 位于类路径中时,为什么 Ant 会显示 "NoClassDefFound"?

linux - 为什么 Eclipse 自己的选项卡在 Linux 上非常大而 SWT 选项卡文件夹却不是

java - JSpinner 获取最大最小值

java - 将 Zeromq 添加到 Github 上的现有 Java Gradle 项目