How to use Scanner to accept only valid int as input

Use Scanner.hasNextInt():

Returns true if the next token in this scanner’s input can be interpreted as an int value in the default radix using the nextInt() method. The scanner does not advance past any input.

Here’s a snippet to illustrate:

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);

You don’t have to parseInt or worry about NumberFormatException. Note that since the hasNextXXX methods don’t advance past any input, you may have to call next() if you want to skip past the “garbage”, as shown above.

Related questions

Leave a Comment