How to Handle Invalid Input Using Scanner
While using Scanner for user input, handling invalid input, such as non-numerical characters, is crucial for program robustness. Let's explore a solution to handle this issue.
Consider the following code snippet:
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(); }
This code aims to obtain two integers from the user, ensuring that the second number (num2) is greater than the first (num1). However, it has two limitations:
To address these issues, we can leverage the Scanner.hasNextInt() method, which determines if the next token in the input can be interpreted as an integer.
The following code snippet incorporates these improvements:
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);
By checking for valid input using hasNextInt() and ignoring invalid characters, the program handles non-numerical input gracefully. Additionally, the do-while loop ensures that the second number is greater than the first, preventing the loop from continuing after valid input is obtained.
The above is the detailed content of How to Gracefully Handle Invalid Integer Input with Java's Scanner?. For more information, please follow other related articles on the PHP Chinese website!