Aide problème boucle while JAVA IntelliJ

Résolu
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

2 réponses

  1. Modérateur
    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!
  2. Contributeur
    Bonjour,
    En plus propre, ce serait d'utiliser une expression régulière :)