Instance de la classe Scanner non vide
Résolu/Fermé
nicosan92
Messages postés
11
Date d'inscription
mercredi 31 juillet 2013
Statut
Membre
Dernière intervention
19 août 2013
-
31 juil. 2013 à 18:38
nicosan92 Messages postés 11 Date d'inscription mercredi 31 juillet 2013 Statut Membre Dernière intervention 19 août 2013 - 1 août 2013 à 00:23
nicosan92 Messages postés 11 Date d'inscription mercredi 31 juillet 2013 Statut Membre Dernière intervention 19 août 2013 - 1 août 2013 à 00:23
A voir également:
- Instance de la classe Scanner non vide
- Formate pour taxer client frigo vide - Forum Loisirs / Divertissements
- Scanner un document - Guide
- Coeur vide ✓ - Forum Facebook
- Telecharger scanner - Télécharger - Divers Utilitaires
- Vba dernière colonne non vide ✓ - Forum VB / VBA
1 réponse
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
31 juil. 2013 à 23:34
31 juil. 2013 à 23:34
System.in est un objet unique (puisque tu n'as qu'un clavier), il faut donc lui associer un unique objet Scanner. De plus tu as d'autres erreur, comme ton "int choix = null;" puisque choix est un int tu ne peux pas lui affecter une valeur null, celle-ci est réservée aux objets !
Voici comment on pourrait faire, en décomposant le traitement et ne manipuler le Scanner que sur une méthode dédiée "getInt" qui va gérer tous les cas possibles d'erreurs lors de la saisie utilisateur, ce qui rend plus simple l'utilisation de la méthode "switchPersonType" et des autres.
Exemple :
Voici comment on pourrait faire, en décomposant le traitement et ne manipuler le Scanner que sur une méthode dédiée "getInt" qui va gérer tous les cas possibles d'erreurs lors de la saisie utilisateur, ce qui rend plus simple l'utilisation de la méthode "switchPersonType" et des autres.
Exemple :
public static final Scanner scanner = new Scanner(System.in); public static int getInt(String msg, int min, int max, String msgError) { while (true) { System.out.print(msg); try { int n = Integer.parseInt(scanner.nextLine()); if (n >= min && n <= max) return n; } catch (NumberFormatException e) { } System.out.print(msgError); } } public static int switchPersonType() { System.out.println("Bienvenue !"); System.out.println("Qui êtes vous ?"); System.out.println(); System.out.println("\t1. Moniteur"); System.out.println("\t2. Client"); System.out.println("\t0. Quitter"); return getInt("\nChoix : ", 0, 2, "Veuillez entrer un choix valable"); }
1 août 2013 à 00:23
Ce n'est pas vraiment mon habitude de programmer comme cela, mais je vais creuser un peu plus sur ce genre de méthodes qui, il est vrai, simplifie grandement la vie. Il faut également que je m'habitue à catcher les exceptions.
Merci beaucoup pour ta réponse. Je crois que ton aide m'apporte bien plus qu'une réponse à ma question. :)
À bientôt.