Manejo de excepciones con un ciclo do-while en Java

El algoritmo debe tener 3 enteros para una ArrayList. Si la entrada no es un número entero, entonces debería haber una solicitud. Cuando ejecuto mi código, elcatch Se ejecuta la cláusula, pero el programa se ejecuta en un bucle infinito. ¿Podría alguien guiarme en la dirección correcta? Agradezco la ayuda. :-RE

package chapter_08;
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;

public class IntegerList {
    static List<Integer> numbers = new ArrayList<Integer>();

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int counter = 1;
        int inputNum;

        do {
            System.out.print("Type " + counter + " integer: " );
            try {
                inputNum = input.nextInt();
                numbers.add(inputNum);
                counter += 1;
            }
            catch (Exception exc) {
                System.out.println("invalid number");
            }
        } while (!(numbers.size() == 3));
    }
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta