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

如果扫描器接收到除int以外的内容,则会创建无休止的循环

潘阳舒
2023-03-14

在这个java方法中,扫描器接收最小值和最大值之间的整数。如果接收到的int超出这些界限,程序将正确输出“无效输入”。然而,如果输入了诸如“g”或“h”之类的内容,或者输入了int以外的内容,就会创建一个无休止的循环。

我试图在代码中的多个位置重新初始化扫描仪,但它看起来像是从System.in输入int以外的东西时,它只是再次通过扫描仪飞行并保持循环。任何想法

public static int promptInt(int min, int max) {
    while (false != true) {
        int b = 0;
        Scanner scnr = new Scanner(System.in);
        System.out.print("Choose a value between " + min + " and " + max + ": ");
        if (scnr.hasNext()) {
            if (scnr.hasNextInt()) {
                b = scnr.nextInt();
                if (b <= max) {
                    return b;
                } else {
                    System.out.println("Invalid Value");
                }
            }
            else if (scnr.hasNextInt() == false) {
                System.out.println("Not an Int");

            }
        }
    }
}

共有1个答案

谢涵亮
2023-03-14

根据上面的一些评论,scnr。next()是必需的,否则它将继续检查初始化的第一个扫描仪。下面是修订后的代码,现在可以使用了。

public static int promptInt(int min, int max) {
    Scanner scnr = new Scanner(System.in);
    while (false != true) {
        int b = 0;
        System.out.print("Choose a number between " + min + " and " + max + ": ");
        if (scnr.hasNext()) {
            if (scnr.hasNextInt() == false) {
                System.out.println("Invalid value.");
                //the scnr.next was needed here
                scnr.next();
            }
            else {
                b = scnr.nextInt();
                if (b <= max) {
                    return b;
                } else {
                    System.out.println("Invalid value.");
                }  
            }
        }
    }
}
 类似资料:
  • 我需要创建一个简单的游戏,其中创建了一个随机数,用户必须猜测数字输入到扫描仪。如果他们的猜测太高,系统会告诉他们猜测得更低,如果猜测得太低也是一样。 我正在使用while循环,但我不知道如何连续调用扫描器,以便用户可以不断猜测。以下是我到目前为止的代码:

  • 我正在使用Jersey 2.5.1和Jackson 2.2。用于构建JSON Rest web服务。我也用2个ExceptionMappers启动并运行了它,但对于“非json”请求,应用程序不会抛出任何异常! > 如果抛出NullPointerException,将调用ExceptionMapper 如果JSon映射有问题,将调用ExceptionMapper 我的问题:1.请求正文:{}工作2

  • 问题内容: 可以将Hibernate配置为自动扫描软件包以从带注释的Bean 创建A 吗? 目前我正在使用 我不想使用配置映射。 请注意,我想在不使用任何Spring或此类框架的情况下,在一个普通的Java项目中实现这一目标。 以前使用Spring可以回答类似的问题,但是我想在不使用Spring或其他框架的情况下实现。我对执行此操作的一些简单库持开放态度。 问题答案: 不能。即使使用最新的Hibe

  • 我有一段简单的代码,它应该是一个无休止的循环,因为将一直增长,并且始终大于。 但按原样,它打印并且不会无休止地循环。我想不出为什么。但是,当我以以下方式调整代码时: 它变成了一个无休止的循环,我不知道为什么。java是否认识到它是一个无休止的循环并在第一种情况下跳过它,但在第二种情况下必须执行一个方法调用,这样它的行为就像预期的那样?困惑:)

  • 正如使用boto3完全扫描dynamoDb中所解释的,我构建了一个解决方案,使用某些条件完全扫描dynamoDb表。这是我的代码: 但是当代码被执行时,它会进入一个无限循环。这是LastEvaluatedKey每次迭代的输出: 它一直在这两对之间循环。 编辑: 我添加了do_scan方法。

  • 有数据集在. csv文件格式 这个文件有超过4百万行。 我在远程超级计算机上运行数据库,我使用ssh隧道连接。我创建2个索引: 然后执行查询: 过了一段时间,我不知道一个小时,有关查询执行的信息消失或出现未知错误。但是当我localhost:7474/webadmin统计数据时,节点数量增长非常缓慢——大约10秒内增加5-8个节点。 当我执行查询时:(我可以,因为没有显示正在运行的查询) 大约有7