Como evito que um scanner lance exceções quando o tipo errado é inserido?

Aqui está um exemplo de código:

import java.util.Scanner;
class In
{
    public static void main (String[]arg) 
    {
    Scanner in = new Scanner (System.in) ;
    System.out.println ("how many are invading?") ;
    int a = in.nextInt() ; 
    System.out.println (a) ; 
    } 
}

Se eu executar o programa e fornecer umint gostar4, então tudo vai bem.

Por outro lado, se eu respondertoo many não ri da minha piada engraçada. Em vez disso, recebo isso (como esperado):

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:819)
    at java.util.Scanner.next(Scanner.java:1431)
    at java.util.Scanner.nextInt(Scanner.java:2040)
    at java.util.Scanner.nextInt(Scanner.java:2000)
    at In.main(In.java:9)

Existe uma maneira de fazê-lo ignorar entradas que não são ints ou responder com "Quantas estão invadindo?" Eu gostaria de saber como fazer os dois.

questionAnswers(3)

yourAnswerToTheQuestion