用户输入的 Java 验证错误

标签 java eclipse

我有以下代码,其中的想法是用户输入两个数字,然后计算两个数字的总和。 如果值无效,例如输入一个字符,应该输出一条错误消息,但我不断收到错误

Java

package calculator;
import java.util.Scanner;

public class calculator {
    /**
     * @param args
     */
    public static void main(String[] args) {
        double n1, n2;
        String operation;
        Scanner scannerObject = new Scanner(System.in);

        System.out.println("Enter first number");
        n1 = scannerObject. nextDouble();


        System.out.println("Enter second number");
        n2 = scannerObject. nextDouble();

        Scanner op = new Scanner(System.in);
        System.out.println("Enter your operation");
        operation = op.next();

        switch (operation)  {
        case "+":
            System.out.println("Your answer is " + (n1 + n2));
            break;

        case "-":
            System.out.println("Your answer is " + (n1 - n2));
            break;

        case "/":
            System.out.println("Your answer is " + (n1 / n2));
            break;

        case "*":
            System.out.println("Your asnwer is " + (n1 * n2));
            break;

        default:
            System.out.println("I do not know!");}
        }
            int function(){
                Scanner input = new Scanner(System.in);   
                System.out.print("Enter an integer between 1-100: ");   
                int range;
            while(true){   
                    if(input.hasNextInt()){   
                    range = input.nextInt();
                    if(0<=range && range <= 100)
                        break;
                    else
                        continue;
                    }
                    input.nextLine();  //Comsume the garbage value
                    System.out.println("Enter an integer between 1-100:");
                }
                return range;
                }

             }

这些是我收到的错误消息:

错误

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextDouble(Scanner.java:2456)
    at calculator.calculator.main(calculator.java:14)

我尝试了很多不同的方法,但无法让它按照我想要的方式工作。

有人可以帮忙吗?

感谢您的阅读

最佳答案

此异常由 Scanner 类的实例引发,以指示检索到的 token 与预期类型的​​模式不匹配,或者检索到的 token 超出范围。

您可以在此处查看异常的文档:https://docs.oracle.com/javase/7/docs/api/java/util/InputMismatchException.html

取自 Scanner 上的文档

double nextDouble()

Returns the next token as a long. If the next token is not a float or is out of range, InputMismatchException is thrown.

我怀疑您输入的电话号码不正确。确保您的输入格式正确。

您还应该设置扫描仪的区域设置,因为某些区域设置需要逗号,而不是点,如:

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

关于用户输入的 Java 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33619363/

相关文章:

android - 适用于 Android C/C++ 的 Eclipse CDT

android - 如何使用opencv在Android相机上制作矩形?

java - 如何从 Android 的 ListView 中删除项目?有像iOS那样的内置控件吗?

java - 在 Java 中使用 for 循环进行迭代

java - 反编译后的代码与原始代码不同

java - 如果两个对象具有相同的哈希码那么它们的内存地址怎么办

java - 由于缺少主类警报,因此无法在MacOS上安装Eclipse

java - 只允许一个 JInternalFrame 实例

java - 添加外部文件到jar

java - Maven 编译 javax.ejb 不存在