Java: Vérification du contenu de la variable char avec si la condition
J'ai une variable char qui est censé contenir un Y,Y,n ou n caractères, je veux tester si elle n'en contient pas, puis afficher un message d'erreur et quitter le programme.
C'est le code j'utilise;
if (userDecision != 'Y' || userDecision != 'y' || userDecision != 'n' || userDecision != 'N')
{
System.out.println("Error: invalid input entered for the interstate question");
System.exit(0);
}
Indépendamment de ce qui est dans la variable elle renvoie toujours vrai et exécute la commande pour quitter le programme, ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
||
moyens ou logique. Vous souhaitez&&
à la place.a || b
retourne true si soit un ou b est vrai. Supposons que leuserDecision
est'Y'
. PuisuserDecision != 'Y'
est fauxuserDecision != 'y'
est vraiuserDecision != 'N'
est vraiuserDecision != 'n'
est vraiDonc la condition est vraie et si la branche est exécutée.
Otoh, que,
a && b
retourne true si les deux un et b sont vrais, qui est ce que vous avez vraiment besoin.Lire la première partie de la condition à haute voix: c'Est le choix différent de
Y
ouy
? Le problème est que chaque personnage est différent, soit à partir deY
ouy
. Vous avez choisi le mauvais opérateur logique – si vous voulez être sûr que l'utilisateur a remarqué quelque chose d'autre que les caractères dans l'état, vous avez à choisir&&
, et logique: c'Est le caractère différent deY
et aussi différente dey
et etc.Votre état est "si ce n'est pas un ou pas b", ce qui signifie qu'il sera toujours vrai, même si c'est a ou b. Ce que vous voulez de test est "si ce n'est pas (a ou b)" afin d':
Si votre code contient des conditions comme ça, qui deviennent longtemps que beaucoup d'autres caractères doivent être testées, vous pouvez utiliser le commutateur de construire, ce qui rend ce cas plus facile à suivre:
Changement yoiur Rup à une Padn
Ou vous pouvez utiliser
Ce
vaut
Ont un coup d'oeil à L'algèbre booléenne
De Morgans théorème
DeMorgan le Théorème de
Vous devez utiliser
&&
au lieu de||
. Vous êtes en se demandant si "aucun" de ces caractères correspondent, pas simplement de savoir si l'une quelconque des quatre ne parviennent pas à égaler. (D'une valeur ne peut pas simultanément être Y, Y, N et N.)