Envoyé par
abysr
Salut,
La condition sera toujours
false avec "&&" car on aura toujours au moins 3 conditions
false et comme false && qqch = false, on affectera jamais notre variable "
choixEleve"
Plutot il suffit de mettre "==" au lieu de "!="
code :
1 2 3
| do{
if(choixEleve == 1 || choixEleve == 2 || choixEleve == 3 || choixEleve == 4){
choixEleve = scanner.nextInt(); } |
Non.
- La condition sera toujours false avec "&&" => faux (si les quatres sous conditions sont vraies alors la condition est vraie, et elles le sont si le choix est ni 1, ni 2, ni 3, ni 4.
- car on aura toujours au moins 3 conditions false => faux : choixEleve!=2 est vraie dans tous les cas sauf si choixEklement vaut 2 (soit une "infinité" de possibilité qu'elle soit vraie). Pareil pour les autres.
- on affectera jamais notre variable "choixEleve" : faux. Déjà elle est affectée au moins une fois au début.
- false && qqch = false : tout juste. while( true ) boucle et while (false) non. Si le choix est correcte, au moins un des choixEleve!=x est faux, donc la boucle s'arrête, si le choix est incorrect, ils sont tous vrais, donc la boucle continue.
Par exemple, si choixEleve vaut 5 :
choixEleve != 1 && choixEleve != 2 && choixEleve != 3 && choixEleve != 4 = 5!=1 && 5!=2 && 5!=3 && 5!=4 = vrai && vrai && vrai && vrai = vrai on boucle pour redemander un choix (parce que le choix est incorrect)
Si choixEleve vaut 1
choixEleve != 1 && choixEleve != 2 && choixEleve != 3 && choixEleve != 4 = 1!=1 && 1!=2 && 1!=3 && 1!=4 = faux && vrai && vrai && vrai = faux on ne boucle pas pour redemander un choix (parce que le choix est correct)
Et c'est également le cas pour la seconde saisit (tant que le résultat est incorrect on boucle, dès qu'il est bon on ne boucle plus et on passe à la suite).
Avec ta proposition :
if(choixEleve == 1 || choixEleve == 2 || choixEleve == 3 || choixEleve == 4){
Veut dire que si le choix vaut 1, alors on le redemande !
choixEleve == 1 || choixEleve == 2 || choixEleve == 3 || choixEleve == 4 = true || false || false || false == true !!!
Super. Pourquoi le redemander s'il est correct ? Par contre, s'il est incorrect on continue, on ne fait rien (parce que le switch ne traite que des codes corrects) puis on arrive au while : là, tu n'as rien proposé, donc on reprend ce que j'ai expliqué précédemment... Et je ne parle pas de la conservation du do/while, avec le code de traitement dedans, qui sont absurdes tous les deux.
On peut envisager un do/while si on fait un test à l'intérieur pour afficher un message différent, ou alors on réaffiche systématiquement le même menu. Sinon, un while est plus simple (une déclaration unique de variable au bon endroit, moins de if, une interface plus claire, des messages circonstantiels et minimums et par de répétition inutile)
Partager