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
- Supprimer page word vide - Guide
- Formate pour taxer client frigo vide - Forum PDF
- Installer scanner - Télécharger - Divers Utilitaires
- Coeur vide - Forum Facebook
- Tnt base de données vide ✓ - Forum TNT / Satellite / Réception
1 réponse
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
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.