Your Looping condition is :
int i = 0;
while (i == 0) { // Looping against i==0
try {
System.out.print("Enter first number");
a = input.nextInt();
System.out.println("The number you entered is " + a);
System.out.println("Enter second number");
b = input.nextInt();
System.out.println("The number you entered is " + b);
i++; // Increments the value of i to 1, which makes the loop to exit after first iteration
} catch (InputMismatchException e) {
e.printStackTrace();
}
}
Refactor your code as :
boolean areBothIntegers = true;
while (areBothIntegers) {
try {
System.out.print("Enter first number");
a = input.nextInt();
System.out.println("The number you entered is " + a);
System.out.println("Enter second number");
b = input.nextInt();
System.out.println("The number you entered is " + b);
} catch (InputMismatchException e) {
e.printStackTrace();
areBothIntegers = false;
}
}
Sample Output :
Enter first number : 10
The number you entered is 10
Enter second number : 21
The number you entered is 21
Enter first number : 21
The number you entered is 21
Enter second number : 34
The number you entered is 34
Enter first number : 21.5 // Not an int value, so throws the exception and exits
java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at jdbc.statements.ADS.main(ADS.java:15)