Aide problème boucle while JAVA IntelliJ

Résolu
JL12 -  
AssassinTourist Messages postés 7838 Statut Contributeur -
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 19031 Statut Modérateur 3 020
 
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
JL12
 
Merci beaucoup!
0
AssassinTourist Messages postés 7838 Statut Contributeur 1 312
 
Bonjour,
En plus propre, ce serait d'utiliser une expression régulière :)
0