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