Probleme avec boucle while avec un char

meli:0 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'ai un problème avec une boucle while. J'essaie de faire une boucle pour valider une reponse. Cependant je suis debutante et je ne comprend pas pourqui ce que j'ai fait ne fonctionne pas. Je me suis dit que c'etait peut etre a cause que le signe different de s'utilise differement avec un char mais je n'ai rien trouver sur internet. La premiere boucle est repeter sans arret meme si je met f ou F ou t ou T et j'ai essayer d'enlever cette boucle et le meme probleme m'arrive lorsque je suis a lautre boucle != avec le char choix ... SVP je suis extremement débutante donc des explication claire avec des mots clairs seraient appréciés Merci :)

while ( reponse != 'f' || reponse != 'F' || reponse != 't' || reponse != 'T' ){
System.out.println ( "Veuillez entrer un choix valide" );
System.out.println ( "Voulez-vous mettre fin au programme ou traiter une" +
" facture (Saisir f pour fermer ou t pour continuer)" );
reponse = Clavier.lireCharLn ();
}
while ( reponse == 't' || reponse == 'T' ){
while ( choix != 'O' || choix != 'o' || choix != 'n' || choix != 'N' ){
System.out.println ( "Veuillez entrer un choix valide" );
System.out.println ( "Voulez-vous entrer des informations sur d'autres" +
"vetements (Saisir o pour oui / n pour non)" );
choix = Clavier.lireCharLn ();
}
while ( choix == 'O' || choix == 'o' ){
System.out.println ( "CATEGORIES DE VETEMENTS" );
System.out.println ( "1- Pantalons" );

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
C'est un problème de logique, tes conditions sont toujours vraies :

reponse != 'f' || reponse != 'F' || reponse != 't' || reponse != 'T'
choix != 'O' || choix != 'o' || choix != 'n' || choix != 'N'

Par exemple si la réponse est 'f' alors
reponse != 'f'
sera faux, mais
reponse != 'F'
sera vrai, et inversement si la réponse est 'F' alors
reponse != 'F'
sera faux, mais
reponse != 'f'
sera vrai. Donc dans tous les cas
reponse != 'f' || reponse != 'F'
sera vrai à cause du
||
.

Ce qu'il te faut ce ne sont pas des OU logiques, mais des ET logique.

reponse != 'f' && reponse != 'F' && reponse != 't' && reponse != 'T'
choix != 'O' && choix != 'o' && choix != 'n' && choix != 'N'
0