当前位置: 首页 > 知识库问答 >
问题:

当用户输入是一个小浮动时,扫描器抛出

童华池
2023-03-14
public static int userNumber(){

        Scanner input = new Scanner(System.in);

        int n = 0;

        while(n <= 0){
            System.out.println("Please enter a positive integer");
            n = input.nextInt();
        }

        return n;

    }
Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Unknown Source)
    at java.base/java.util.Scanner.next(Unknown Source)
    at java.base/java.util.Scanner.nextInt(Unknown Source)
    at java.base/java.util.Scanner.nextInt(Unknown Source)
    at Lab5.userNumber(Lab5.java:22)
    at Lab5.main(Lab5.java:7)

我试着关闭扫描仪,但这也导致了一个错误...有人能帮我弄明白怎么回事吗?我想提示用户输入一个有效的整数,如果输入无效,则继续提示。

谢了!

共有1个答案

公西凯捷
2023-03-14

scanner.nextInt()抛出InputMismatchException如果下一个标记与整数不匹配。

作为一个选项,在扫描输入之前,可以使用scanner.hasnextInt()方法检查输入是否是有效的整数

示例:

try (Scanner sc = new Scanner(System.in)) {
    String msg = "Please, enter a positive Integer:";
    int n = 0;

    do {
        System.out.println(msg);
        // make the user keep entering the input until it's an Integer
        while (!sc.hasNextInt()) {
            System.out.println(msg);
            sc.next();
        }
        n = sc.nextInt();
    }
    while (n <= 0); // run until the input is a positive Integer

    return n;
}

 类似资料:
  • 问题内容: 我正在使用Java的扫描仪读取用户输入。如果我仅使用nextLine一次,那就可以了。使用两个nextLine时,第一个不会等待用户输入字符串(第二个会输入)。 输出: X:Y :(等待输入) 我的密码 任何想法为什么会发生这种情况?谢谢 问题答案: 您可能像以前那样调用方法。这样的程序是这样的: 演示您所看到的行为。 问题是不消耗,因此下一个调用将消耗它,然后等待读取的输入。 您需要

  • 首先为标题感到抱歉,想不出别的了。我目前正在完成一个关于JetBrains Hyperskill的项目,该项目是一个单位转换器,用户可以在其中转换重量、长度和温度单位。我几乎完成的项目,转换工作很好,但我有一个问题与用户输入。 用户输入由以下部分组成: 因此,用户可以输入如下内容: null null -要转换的数量 -这应该是像“摄氏”和“摄氏度”这样的输入 -随机单词 -这也应该读取输入,如“

  • 我有一个场景,计算机对人类玩家玩TicTacToe游戏。用户在控制台(System.in)上输入,该输入通过扫描器OBJ读取。在每一次移动之后,程序做出决定,如果任何一个玩家能够做出一个移动,将使游戏更接近胜利(赢家可以是人类或计算机,这并不重要)。我的问题是,当程序决定游戏已经进入死胡同(无论哪一个玩家做出什么动作,游戏都不可能由哪一个获胜)时,它会终止所有线程,除了一个等待扫描器对象上的用户输

  • 问题内容: 对于Java练习,我试图创建一个程序,该程序从键盘读取整数,直到输入负数为止。 并打印整数的最大值和最小值,而忽略负数。 一旦运行,是否可以在同一程序中进行连续输入?我必须每次都继续运行该程序以输入数字。 任何帮助,将不胜感激 这是我的代码的一部分-它可以工作,但是我认为有一种更简单的方法可以执行我想要的操作,但不确定如何操作! 问题答案:

  • 对于java实践,我正在尝试创建一个程序,从键盘读取整数,直到输入负数。 它打印整数的最大值和最小值,忽略负数。 是否有一种方法可以在同一个程序运行后继续输入?每次输入一个数字,我都要继续运行程序。 任何帮助将不胜感激 这是我的代码的一部分-它可以工作,但我认为有一种更简单的方法可以做我想做的事情,但不确定如何做!

  • 问题内容: 我正在尝试让扫描仪在循环中进行输入。一旦用户想要完成操作,他就可以退出此循环。我尝试了许多不同的方法来执行此操作,但始终存在一些问题。这是代码: 上面代码的问题(在我尝试的其他方法上也会发生)是,当用户键入 Y时 ,将跳过名字的第一个输入,并跳转到姓氏。如果用户键入 N, 则循环将正确停止。有人可以解释发生这种情况的原因,以及如何克服使用课堂的问题? ps:执行类似的操作,将导致循环终