Switch et do while
Résolu
helloworld95
-
helloworld95 -
helloworld95 -
Bonjour,
Dans le code suivant, je boucle directement après avoir choisi par exemple case 1 et ducoup je ne sais pas continuer la suite de mon programme car le menu reviens directement après.
Dans le code suivant, je boucle directement après avoir choisi par exemple case 1 et ducoup je ne sais pas continuer la suite de mon programme car le menu reviens directement après.
char stop = 'o'; int choix = 0; do{ System.out.println("Menu principal : Que voulez-vous faire?"); System.out.println(); System.out.println("1 ---> Ajouter un article au panier d'achats"); System.out.println("2 ---> (PAS ENCORE DISPONIBLE) Supprimer un article du panier d'achats"); System.out.println("3 ---> Voir tous vos articles"); System.out.println("4 ---> Quittez le menu et enregistrez vos achats"); choix = scanner.nextInt(); switch (choix) { case 1: ajouterArticle(); break; case 3: afficherPanier(); break; } }while(stop != 'n');
A voir également:
- Switch while
- Android switch - Accueil - Android
- Smart switch pc - Télécharger - Divers Bureautique
- Switch off - Télécharger - Divers Utilitaires
- Logiciel switch - Télécharger - Conversion & Extraction
- Switch 2 - Accueil - Jeu vidéo
Je n'ai toujours pas le code complet mais j'ai l'impression que c'est le même objet scanner que tu utilises dans les deux codes.
Le problème c'est que la méthode nextInt() ne fait pas ce que tu penses, car lorsque tu saisis un nombre au clavier, tu as des chiffres que la méthode nextInt() va lire et que tu utilises dans ton choix, mais au clavier tu appuies aussi sur Entrée pour valider ta ligne et c'est cette saisie là qui est lu par nextLine() dans ton code d'ajout d'articles.
La solution : quand tu utilises la classe Scanner avec le clavier il faut toujours utiliser la méthode nextLine() qui va prendre la ligne complète telle que tu la saisie lorsque tu appuies sur Entrée. Après si c'est censé être un entier tu le convertis, mais n'utilises pas directement la méthode nextInt() qui n'est pas pensé pour ce cas d'usage.
Remarque : dans ce cas c'est un peu dommage de convertir la valeur en entier, on pourrait très bien faire le switch sur le String correspondant à ligne saisie...
Menu principal : Que voulez-vous faire?
1 ---> Ajouter un article au panier d'achats
2 ---> (PAS ENCORE DISPONIBLE) Supprimer un article du panier d'achats
3 ---> Voir tous vos articles
4 ---> Quittez le menu et enregistrez vos achats
1
Entrez le nom de l'article :
test
Voulez-vous continuez? (o/n)
o
Menu principal : Que voulez-vous faire?
1 ---> Ajouter un article au panier d'achats
2 ---> (PAS ENCORE DISPONIBLE) Supprimer un article du panier d'achats
3 ---> Voir tous vos articles
4 ---> Quittez le menu et enregistrez vos achats
Voulez-vous continuez? (o/n)
1
Menu principal : Que voulez-vous faire?
1 ---> Ajouter un article au panier d'achats
2 ---> (PAS ENCORE DISPONIBLE) Supprimer un article du panier d'achats
3 ---> Voir tous vos articles
4 ---> Quittez le menu et enregistrez vos achats
Voulez-vous continuez? (o/n)
Menu principal : Que voulez-vous faire?
1 ---> Ajouter un article au panier d'achats
2 ---> (PAS ENCORE DISPONIBLE) Supprimer un article du panier d'achats
3 ---> Voir tous vos articles
4 ---> Quittez le menu et enregistrez vos achats
1
Entrez le nom de l'article :
article1
Voulez-vous continuez? (o/n)
o
Menu principal : Que voulez-vous faire?
1 ---> Ajouter un article au panier d'achats
2 ---> (PAS ENCORE DISPONIBLE) Supprimer un article du panier d'achats
3 ---> Voir tous vos articles
4 ---> Quittez le menu et enregistrez vos achats
1
Entrez le nom de l'article :
article2
Voulez-vous continuez? (o/n)
o
Menu principal : Que voulez-vous faire?
1 ---> Ajouter un article au panier d'achats
2 ---> (PAS ENCORE DISPONIBLE) Supprimer un article du panier d'achats
3 ---> Voir tous vos articles
4 ---> Quittez le menu et enregistrez vos achats
3
Exception in thread "main" java.lang.NullPointerException
at Panier.toString(Panier.java:29)
at TestPanier.afficherPanier(TestPanier.java:51)
at TestPanier.main(TestPanier.java:26)