Moyen plus facile de garantir une entrée entière par le biais de Scanner?
Pour un programme que je suis en train d'écrire, j'ai besoin de demander à un utilisateur pour un nombre entier compris entre 1 et 8. J'ai essayé plusieurs (plus propre) les moyens de le faire, mais aucun d'entre eux travaillaient, donc je me retrouve avec ceci:
int x = 0;
while (x < 1 || x > 8)
{
System.out.print("Please enter integer (1-8): ");
try
{
x = Integer.parseInt(inputScanner.next());
}
catch(NumberFormatException e)
{
x = 0;
}
}
Où inputScanner
est un Scanner. Il y a sûrement un meilleur moyen?
Vous devez vous connecter pour publier un commentaire.
Scanner ne les expressions régulières, droit? Pourquoi ne pas vérifier si elle correspond à "^[1-8]$" en premier?
À l'aide de la nextInt() est déjà un progrès par rapport à tout simplement à l'aide de la méthode next (). Et avant cela, vous pouvez utiliser le hasNextInt() pour éviter de haing tout ce tas d'inutiles exceptions.
Résultant en quelque chose comme ceci:
J'ai dû faire une interface graphique de la calculatrice (ne fonctionne qu'avec des Entiers), et le problème, c'est que
les Tests ne permettent pas toute exception à être levée si l'entrée n'était pas
Entier. Donc je ne pouvais pas utiliser
Parce que les programmes Java de façon générale, une entrée à un component swing jtextfield comme une Chaîne de caractères
J'ai utilisé ceci:
espère que cela aide 🙂
Apache Commons est votre ami. Voir NumberUtils.toInt(String, int)
J'ai toujours envie de tirer dans la chaîne complète de sorte que vous pouvez être sûr que l'utilisateur a poussé le bouton Enter. Si vous venez d'utiliser
inputScanner.nextInt()
vous pouvez mettre deuxint
s sur une ligne et il va tirer dans l'un, puis l'autre.Exemple de code:
Un tableau peut également être utilisé pour stocker un entier.
Vous pouvez essayer quelque chose comme ceci: