Como insistir que uma entrada de usuários é um int?

Problema básico aqui .. Vou começar pedindo que por favor não responda com qualquer código, pois isso provavelmente só me confundirá ainda mais (programação noob). Eu estou procurando uma explicação clara sobre como resolver esse problema que estou tendo.

Eu tenho um scanner que lê a entrada do usuário. O usuário é solicitado a inserir um valor int entre 1 e 150 (somente números inteiros). Eu obtenho o valor da seguinte forma:

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

E continue com meu programa e tudo funciona bem.

Infelizmente, o código não é exatamente à prova de balas, já que qualquer entrada que não seja um inteiro pode quebrá-lo (letras, símbolos, etc).

Como posso tornar o código mais robusto, onde ele iria verificar se apenas um int foi inserido?

Estes são os resultados que espero:

Vamos dizer que a entrada foi:

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

questionAnswers(7)

yourAnswerToTheQuestion