Aide problème boucle while JAVA IntelliJ

Résolu/Fermé
JL12 - Modifié le 28 mai 2018 à 12:19
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 - 30 mai 2018 à 11:13
Bonjour,

Je suis entrain de faire un projet sur IntelliJ (débutant), où l'utilisateur doit rentrer A,B ou C (il faut le valider l'entrée et la lettre peut être en majuscule ou en minuscule). Si n'importe quelle autre lettre est entrée alors un message d'erreur doit s'afficher. Le problème est que maintenant peu importe la lettre entrée le message d'erreur s'affiche, et ce même s'il fait partie des choix qui sont valides.

while ((choixLavage != (char) 65) || (choixLavage != (char) 66) || (choixLavage != (char) 67)
                           || (choixLavage != (char) 97) || (choixLavage != (char) 98) || (choixLavage != (char) 99)) {
                           System.out.println ( MSG_ERREUR_LAVAGE );
                           System.out.println ( CHOIX_LAVAGE_VOITURE_1 );
                           choixLavage = Clavier.lireCharLn ();
                       }


J'apprécierais énormément si quelqu'un pourrait m'aider,
Merci
A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 mai 2018 à 12:37
Bonjour,

Déjà pour simplifier la lecture du code, il n'y a aucun intérêt à mettre
(char) 65
, tu devrais mettre directement
'A'
et ainsi de suite pour les autres valeurs.

Quant à ton problème c'est de la logique.
Tu as dis que "tant que ce n'est pas A ou que ce n'est pas B... alors on affiche une erreur"
Donc si ce n'est pas A c'est une erreur et si c'est A c'est une erreur aussi car A ce n'est pas B...

Il faudrait dire "tant que ce n'est pas A et que ce n'est pas B... alors on affiche une erreur"
Tu dois donc remplacer tes
||
par des
&&
pour que ça ait du sens.

if (choixLavage != 'A' && choixLavage != 'B' && choixLavage != 'C' && choixLavage != 'a' && choixLavage != 'b' && choixLavage != 'c')

Une manière encore plus lisible est d'utiliser un String qui contient tous tes caractères à tester :
if ("ABCabc".indexOf(choixLavage) == -1)
1
Merci beaucoup!
0
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 311
30 mai 2018 à 11:13
Bonjour,
En plus propre, ce serait d'utiliser une expression régulière :)
0