首页 > 解决方案 > 循环用户输入直到输入一个正的非零整数

问题描述

我是一个完整的初学者,我正在尝试创建一个 while 循环,不断询问用户输入,直到它得到一个正的非零整数,然后继续下一部分。这是我到目前为止所得到的:

System.out.println("Enter the speed of the vehicle in "
            + "miles per hour: ");
    while (keyboard.hasNext())
    {
        if (keyboard.hasNextInt())
        {
            speed = keyboard.nextInt();
            while (speed <= 0)
            {
                System.out.println("Please enter a positive nonzero number: ");
                speed = keyboard.nextInt();
            }
        }
        else
        {
            System.out.println("Please enter a number: ");
            speed = keyboard.nextInt();
        }
    }

现在,当我运行它并输入除整数以外的任何内容时,它会打印出“请输入一个数字”这一行,但随后我立即收到 InputMatchException 错误并且构建失败。如果我输入一个负数或零,它会提示我输入一个正数,直到我输入一个正数,但随后代码会停止执行并继续运行,同时无限期地什么都不做,而不是转到循环之后的部分,这只是从另一个系统开始。输出。提前感谢您的帮助。

标签: javavalidationinputwhile-loop

解决方案


您需要使用之前输入的非int,然后尝试读取以下输入:

else
{
    System.out.println("Please enter a number: ");
    // consume and ignore the previous non-int input
    keyboard.next();
}

推荐阅读