vérifier si une entrée à partir d'un scanner est de type int avec boucle while java

En gros, je veux la suite tout en boucle pour vérifier si l'entrée est un nombre entier. Il ne peut pas contenir de décimales, car il pointe vers un tableau. Si la valeur entrée est un nombre décimal, il doit inviter l'utilisateur à nouveau. Le problème est que je reçois deux fois avant la boucle while commence avec ce code. Des idées?

      System.out.print("Enter month (valid values are from 1 to 12): ");
    Scanner monthScan = new Scanner(System.in);
    int monthInput = monthScan.nextInt();
    //If the month input is below 1 or greater than 12, prompt for another value
    while(monthInput<1 || monthInput>12 || !monthScan.hasNextInt())
    {
        System.out.print("Invalid value! Enter month (valid values are from 1 to 12): ");
        monthInput = new Scanner(System.in).nextInt();
    }

grâce

EDIT: Le courant de sortie donne les éléments suivants:

Enter month (valid values are from 1 to 12): 2
2

Avis comment je devais entrer 2 deux fois, même si c'est une valeur valide.

InformationsquelleAutor Mo2 | 2013-08-01