Demander à l'utilisateur de saisir l'apport de nouveau après qu'il donne une mauvaise valeur pour l'Entrée. InputMismatchException?
J'ai créé la classe suivante pour la Saisie de l'âge d'un utilisateur et l'affichage approprié d'infos dans la console.
Sur l'exécution de ce programme , la console demande "s'il vous Plaît Entrez votre Age : "
Si l'utilisateur entre un nombre Entier, par exemple: 25 , exécutés classe affiche "Votre âge : 25" dans la console.
Si l'utilisateur entre un nombre fractionnaire , la console affiche:
L'âge doit être un nombre Entier
Veuillez Entrer votre Âge:
Mais je ne suis pas en mesure d'entrer quoi que ce soit par le biais du clavier quand je place mon curseur à côté de "Entrez votre Age: ".
Je veux que l'utilisateur puisse entrer dans son âge nouveau, & si il entre dans un entier, il affiche la bonne sortie, mais s'il entre dans un non-entier la console devrait lui demander de nouveau pour l'âge.
Si vous regardez mon code je suis réglage de la valeur de la variable " âge " par l'appel de la fonction checkAge() à l'intérieur de l'autre bloc dans ma fonction principale.
Quelqu'un peut-il me dire où je vais mal?
public class ExceptionHandling{
static Scanner userinput = new Scanner(System.in);
public static void main(String[] args){
int age = checkAge();
if (age != 0){
System.out.println("Your age is : " + age);
}else{
System.out.println("Age should be an integer");
age = checkAge();
}
}
public static int checkAge(){
try{
System.out.print("Please Enter Your Age :");
return userinput.nextInt();
}catch(InputMismatchException e){
return 0;
}
}
}
Vous devez vous connecter pour publier un commentaire.
problème:
Au moment de la saisie d'une séquence de chaîne, il ne sera pas consommer votre caractère de nouvelle ligne, et quand vous allez de nouveau à l'intérieur de votre méthode et de l'appel
userinput.nextInt()
il va consommer de la nouvelle ligne et sautez donc pas vous permettant d'obtenir l'entrée à nouveau.solution:
ajouter
nextLine();
avant d'appeler lacheckAge
méthode encore de consommer lenew line
de la chaîneexemple:
Vous devriez mettre votre code dans une boucle, si vous le souhaitez exécuter plusieurs fois (jusqu'à ce que les entrées de l'utilisateur valide l'âge) :
userinput.nextLine();
, mais vous avez encore le besoin d'utiliser une boucle. Mise à jour de réponse.