如何使用Scanner仅接受有效的int作为输入

Joh*_*ohn 24 java validation java.util.scanner

我正在尝试使一个小程序更强大,我需要一些帮助.

Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;

System.out.print("Enter number 1: ");
num1 = kb.nextInt();

while(num2 < num1) {
    System.out.print("Enter number 2: ");
    num2 = kb.nextInt();
}
Run Code Online (Sandbox Code Playgroud)
  1. 2号必须大于1号

  2. 此外,我希望程序自动检查并忽略用户是否输入字符而不是数字.因为现在当用户输入例如r而不是数字时,程序就会退出.

pol*_*nts 33

用途Scanner.hasNextInt():

返回true此扫描器输入中的下一个标记是否可以int使用该nextInt()方法解释为默认基数中的值.扫描仪不会超过任何输入.

这是一个片段来说明:

Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!sc.hasNextInt()) sc.next();
int num1 = sc.nextInt();
int num2;
System.out.print("Enter number 2: ");
do {
    while (!sc.hasNextInt()) sc.next();
    num2 = sc.nextInt();
} while (num2 < num1);
System.out.println(num1 + " " + num2);
Run Code Online (Sandbox Code Playgroud)

你不必parseInt担心或担心NumberFormatException.请注意,由于这些hasNextXXX方法不会超过任何输入,因此next()如果您想跳过"垃圾",则可能需要调用,如上所示.

相关问题