In a program that reads integer inputs from the user, utilizing a try/catch block to handle invalid entries, an infinite loop occurs when an InputMismatchException is thrown (e.g., when the user enters a non-integer character).
The infinite loop is caused by two issues:
To fix the infinite loop and ensure correct handling of InputMismatchException, several steps can be taken:
Here's the modified code with the suggested improvements:
import java.util.InputMismatchException; import java.util.Scanner; public class Except { public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean bError = true; int n1 = 0, n2 = 0, nQuotient = 0; do { try { System.out.println("Enter first num: "); n1 = input.nextInt(); System.out.println("Enter second num: "); n2 = input.nextInt(); nQuotient = n1/n2; bError = false; } catch (InputMismatchException e) { System.out.println("Error!"); input.next(); // Consume the erroneous input } } while (bError); System.out.printf("%d/%d = %d",n1,n2, nQuotient); } }
The above is the detailed content of How to Avoid Infinite Loops When Handling InputMismatchException in Java?. For more information, please follow other related articles on the PHP Chinese website!