Bonjour à tous,
J'ai un petit souci que je n'arrive pas à résoudre en Java. C'est plus spécifique à la logique mathématique qu'à la syntaxe Java.
Cela concerne les conditions de sorties d'une boucle while.
Imaginons qu'on souhaite récupérer une nombre entier entre 0 et 10. On récupère ce nombre au clavier et on recommence tant que l'utilisateur n'a pas mis un nombre entre 0 et 10 :
On reste dans la boucle tant qu'on n'a pas ce qu'on veut :
On veut : nb>=0 && nb<=10
On a pas ce qu'on veut : !(nb>=0 && nb<=10) équivalent à (nb > 10 || nb < 0)
Ce qui s'écrit :
do {
lecture de nb;
} while (nb > 10 || nb < 0)
Jusqu'à présent c'est OK pour moi. Imaginons maintenant (et c'est là le problème) qu'on veuille deviner un nombre et que le nombre d'essais doit être inférieur à 3.
On reste dans la boucle tant qu'on n'a pas ce qu'on veut :
On veut : nb = nbAdeviner && nbEssai < 3
On a pas ce qu'on veut : !( nb = nbAdeviner && nbEssai < 3) équivalent à (nb !=nbAdeviner || nbEssai >= 3)
Ce qui s'écrit :
do {
lecture de nb;
nbEssai++;
} while (nb !=nbAdeviner || nbEssai >= 3)
Bien sûr ma condition dans le while est fausse, la bonne réponse est :
while (nb !=nbAdeviner && nbEssai < 3) et non while (nb !=nbAdeviner || nbEssai >= 3)
Pourtant je trouve pas d'erreurs dans mon raisonnement
Merci de m'avoir lu
Partager