Scanner Exception Retry
exception, java, java.util.scanner
Solution
If I understood you correctly, you want the program to ask the user to re-enter a right input after it fails. In that case you can do something like:
boolean inputOk = false;
while (!inputOk) {
System.out.print("Define width: ");
try {
width = scanner.nextDouble();
inputOk = true;
} catch (InputMismatchException e) {
System.err.println("That's not a number!");
scanner.nextLine(); // This discards input up to the
// end of line
// Alternative for Java 1.6 and later
// scanner.reset();
}
}
Note: you should only catch and retry for a `InputMismatchException`. The `nextXxx` methods throw other exceptions, and if you attempt to retry those, your application will go into an infinite loop.
Problem
How to make scanner retry when exception occur? Consider this app running on CLI mode. Example: ``` System.out.print("Define width: "); try { width = scanner.nextDouble(); } catch (Exception e) { System.err.println("That's not a number!"); //width = scanner.nextDouble(); // Wrong code, this bring error. } ``` If the user not inputting `double` type input, then the error thrown. But i want after the error message appears. It's should be asking the user input the width again. How to do that?