如何坚持用户输入是一个int?

Joh*_*ith 1 java int input java.util.scanner

这里的基本问题..我将首先要求你不要回复任何代码,因为这可能只会让我更加困惑(编程菜单).我正在寻找关于如何解决这个问题的明确解释.

我有一个扫描仪,可以读取用户的输入.提示用户输入1到150之间的int值(仅限整数).我获得如下值:

    Scanner scan = new Scanner(System.in);
    int input = scan.nextInt();
Run Code Online (Sandbox Code Playgroud)

继续我的程序,一切正常.

不幸的是,代码并不完全是防弹的,因为任何非整数的输入都可以破坏它(字母,符号等).

如何使代码更加健壮,哪里可以验证只输入了一个int?

这些是我希望的结果:

让我们说输入是:

23 -> valid
fx -> display an error message, ask the user for input again (a while loop would do..)
7w -> error, again
3.7 -> error
$$ -> error
etc
Run Code Online (Sandbox Code Playgroud)

ign*_*nis 12

true如果下一个标记是数字,则Scanner.hasNextInt()返回,false否则返回.

在这个例子中,我调用hasNextInt().如果它返回true,我会经过一段时间并设置输入; 如果它返回false,那么我丢弃输入(scanner.next();)并重复.

Scanner scan = new Scanner(System.in);
while(!scan.hasNextInt()) {
    scan.next();
}
int input = scan.nextInt();
Run Code Online (Sandbox Code Playgroud)