Aide problème boucle while JAVA IntelliJ

Résolu
JL12 -  
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bonjour,
En plus propre, ce serait d'utiliser une expression régulière :)
0