3

Ok。だから私はJavaの初心者です。しかし、0または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.

だから、ここで何が欠けているのか、おそらく非常に明白で、申し訳ありません:(

4

12 に答える 12

8

を行う必要があります&&

「数値が 0 でないか 1 でない場合は、再試行してください」と言っているのです。ただし、同時に 0 と 1 の両方になることはできないため、これは常に true になります。

だから、これはあなたが望むものです:

do {
   //Ask user to enter 1 or 0           
   System.out.print("Enter 1 or 0: ");
   upOrDown = keyboard.nextInt();
} while(upOrDown != 0 && upOrDown != 1); 
于 2012-02-02T08:31:37.137 に答える
5

すべての数字は 1 でも 0 でもありません。)) 2 は 1 ではなく、1 は 0 ではなく、0 は 1 ではありません
。upOrDown が 0 または 1 の場合にループを終了するには、次を使用する必要があります。&&
while(upOrDown != 0 && upOrDown != 1);

于 2012-02-02T08:31:36.183 に答える
4

以下:

upOrDown != 0 || upOrDown != 1

以下と同等です。

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

つまり、常に false であるため、その否定は常に true になり、無限ループが発生しupOrDownます10

これはブール代数 (および集合論) の非常に有名な結果であり、DeMorgan の法則 [ http://en.wikipedia.org/wiki/De_Morgan%27s_laws ] と呼ばれます。あなたがすべきことは次のとおりです。

!(upOrDown == 0 || upOrDown == 1)
于 2012-02-02T08:34:34.383 に答える
4

あなたは基本的に「0または1でなくなるまでこれを行う」と言っています。変数は同時に 2 つの値を持つことができないため、これは常にtrueになります。

これを言う必要があります: 「私の値が 0 ではなく 1 でもないまでこれを行います

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

あなたが望んだことをします。

于 2012-02-02T08:31:58.850 に答える
4

Java とは関係なく、基本的なロジックのみです。同時に 0 と 1 の両方になることはできないため、常に true です。常に !=0 または !=1 のいずれupOrDown != 0 || upOrDown != 1ですupOrDownあなたはおそらく欲しかったupOrDown != 0 && upOrDown != 1

于 2012-02-02T08:32:08.477 に答える
4
upOrDown != 0 || upOrDown != 1

true数値が と異なるか、0または異なる場合に評価され1ます。

それはどちらでしょう。

いつも。

于 2012-02-02T08:32:29.207 に答える
4

あなたの状態に問題があります。またはに変更してupOrDown == 0 || upOrDown == 1くださいupOrDown != 0 && upOrDown != 1

于 2012-02-02T08:32:34.383 に答える
3

これを行う、

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

そして、あなたは Java のまったくの初心者です。これを読んでください。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.23

于 2012-02-02T08:49:36.753 に答える
3
 while(upOrDown != 0 || upOrDown != 1); 

upOrDownは同時に 0 と 1 の両方になることはできないため、このループは終了しません。

于 2012-02-02T08:34:04.730 に答える
3

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

upOrDown0以外かつ1でない場合は、ループを終了します

于 2012-02-02T08:32:08.617 に答える
3

or 条件があります。この条件のいずれかが true の場合、続行されます。したがって、0 を入力すると、条件よりも !=1 が真になります。私が何を意味するか分かりますか?

于 2012-02-02T08:32:39.740 に答える
2

あなたの条件は常に真です。そのため、Whie ループは決して終了しません。

あなたはに変更したいかもしれませんupOrDown != 0 && upOrDown != 1

while ループの詳細

于 2012-02-02T08:35:15.307 に答える