3 votes

Java do while not 0 or 1

Ok. Je suis donc un débutant en Java. Mais pourquoi cette boucle ne se termine jamais, même si je tape 0 ou 1.

do {
   //Ask user to enter 1 or 0           
   System.out.print("Enter 1 or 0: ");
   upOrDown = keyboard.nextInt();

} while(upOrDown != 0 || upOrDown != 1); 
//Here the loop should exit if user entered 1 or 0, but it does not.

Alors, qu'est-ce que j'ai manqué ici, probablement très évident et je suis désolé :(

8voto

Vous devez faire une && .

Vous dites "Si le nombre n'est pas 0 ou n'est pas 1, alors réessayez". Ce sera toujours le cas, car il ne peut pas être à la fois 0 et 1.

C'est donc ce que vous voulez :

do {
   //Ask user to enter 1 or 0           
   System.out.print("Enter 1 or 0: ");
   upOrDown = keyboard.nextInt();
} while(upOrDown != 0 && upOrDown != 1);

5voto

shift66 Points 4964

Parce que chaque nombre n'est pas 1 OU n'est pas 0, n'est-ce pas ? )) 2 n'est pas 1, 1 n'est pas 0 et 0 n'est pas 1
Si vous voulez terminer la boucle si upOrDown est 0 ou 1, vous devez utiliser &&
while(upOrDown != 0 && upOrDown != 1);

4voto

Adam Arold Points 11130

Vous dites en substance "faites-le jusqu'à ce qu'il soit différent de 0 ou de 1". Ce sera toujours vrai car une variable ne peut pas avoir deux valeurs en même temps.

Vous devriez dire ceci : "Faites ceci jusqu'à ce que ma valeur soit différente de 0 ET différente de 1. donc :

while(upOrDown != 0 && upOrDown != 1)

fera ce que vous vouliez.

4voto

Michael Borgwardt Points 181658

Rien à voir avec Java, juste de la logique de base. upOrDown != 0 || upOrDown != 1 es toujours vrai, car upOrDown ne peut pas être à la fois 0 et 1 - c'est toujours soit !=0, soit !=1. Vous vouliez probablement upOrDown != 0 && upOrDown != 1

4voto

Luchian Grigore Points 136646
upOrDown != 0 || upOrDown != 1

Évaluera pour true si le nombre est différent de 0 ou différent de 1 .

Ce qui sera le cas.

Toujours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X