java - 修复 nextInt() 第二步的 java.util.InputMismatchException

标签 java java.util.scanner

<分区>

我正在编写一个非常简单的程序,我从用户那里得到 3 个整数,我想检查以确保它们都是整数,然后再将它们存储到单独的变量中进行处理。我使用的检查适用于第一个输入,但失败并在后两个输入上引发异常。

boolean properInt = scanner.hasNextInt();
    int largest = Integer.MAX_VALUE;
    boolean anError = false;


    while(properInt=false){
        anError=true;
        System.out.println("Invalid number...whole numeric values only");
    }

    while(properInt =true){

    int a= scanner.nextInt();
        System.out.println("you entered "+ a);
    int b = scanner.nextInt();
        System.out.println("you entered "+ b);
    int c= scanner.nextInt();
        System.out.println("you entered "+ c);

最佳答案

原因是当您使用任何 nextXxx(...) 时,扫描仪光标会重置到调用前的位置。当您在输入有效数字后按“输入”键时,扫描仪将忽略“字符”(输入)。但是,当您输入无效值时,会抛出异常,下一个“nextInt”会将回车键字符视为另一个条件,因此不会起作用。

我建议使用 nextLine,然后使用 Integer.ParseInt 并捕获 NumberFormatException

此外,您的 while 循环检查不正确。

properInt=false is a statement.

while(properInt==false) is a condition..

英语不是我的强项,所以如果它令人困惑,请告诉我。

关于java - 修复 nextInt() 第二步的 java.util.InputMismatchException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54174269/

相关文章:

java - 如何找出哪个线程持有监视器?

Java 键盘输入无法使用 KeyBindings - 自制渲染引擎出错?

java - JavaDStream Pom依赖关系

java - Java 中多个 'proxy' 方法的替代方法

java - while 循环中的 Try block 在第二次迭代时不执行

java - Do-While 循环中的 Switch 语句不退出

java - 如何在 POSTMAN 中将字符串列表定义为 POST 方法的 drools 规则

arrays - 使用扫描器创建流

java - 将文件读入数组 - Java

java - Java 中的 2D 数组 TicTacToe 游戏..验证问题