¿Cómo insistir en que una entrada de los usuarios es un int?

El problema básico aquí ... Comenzaré pidiéndole que no responda con ningún código, ya que es probable que eso me confunda aún más (programación noob). Estoy buscando una explicación clara sobre cómo resolver este problema que estoy teniendo.

Tengo un escáner que lee la entrada del usuario. Se le solicita al usuario que ingrese un valor int entre 1 y 150 (solo números enteros). Obtengo el valor de la siguiente manera:

    Scanner scan = new Scanner(System.in);
    int input = scan.nextInt();

Y continúa con mi programa, y ​​todo funciona bien.

Desafortunadamente, el código no es exactamente a prueba de balas, ya que cualquier entrada que no sea un entero puede romperlo (letras, símbolos, etc.).

¿Cómo puedo hacer que el código sea más robusto, donde se verifique que solo se ingresó un int?

Estos son los resultados que espero:

Digamos que la entrada fue:

23 -> valid
fx -> display an error message, ask the user for input again (a while loop would do..)
7w -> error, again
3.7 -> error
$ -> error
etc

Respuestas a la pregunta(7)

Su respuesta a la pregunta