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.
Vous devez vous connecter pour publier un commentaire.
Une petite modification à votre programme résout le problème
De sortie:
Espère que cela vous aide.
Vérifier que l'entrée est entier avec
hasNextInt()
avant d'appelernextInt()
. SinonnextInt()
jette unInputMismatchException
lorsque l'utilisateur tape un non entier.vous pouvez vérifier comme ce
mise à jour
Utilisation
break
après votre logique, de sorte qu'Il sortira après l'entrée valide.