Originariamente inviato da interarete
Credo che puoi fare così:
codice:
Scanner s = new Scanner( System.in );
while ( !s.hasNextInt() )
{
  s = new Scanner( System.in );
  System.out.println( "Inserisci un intero" );
}
Pessima idea, secondo me, creare ogni volta un nuovo scanner.

Ecco un semplice metodo riutilizzabile:
codice:
public static int promptInt (Scanner sc, String prompt)
{
    while (true) {
        System.out.print (prompt);
        try {
            return Integer.parseInt (sc.nextLine ());
        } catch (NumberFormatException nfe) { }
    }
}