Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么((ans!=&&x27;N&&x27;)(ans!=&&x27;Y&&x27;)总是正确的?_Java_While Loop_Boolean - Fatal编程技术网

Java 为什么((ans!=&&x27;N&&x27;)(ans!=&&x27;Y&&x27;)总是正确的?

Java 为什么((ans!=&&x27;N&&x27;)(ans!=&&x27;Y&&x27;)总是正确的?,java,while-loop,boolean,Java,While Loop,Boolean,我试图提示用户再次旋转,而我的“while”表达式总是返回为false。。。有人有什么想法吗 reSpin = false; if (reSpin == false){ System.out.println("Would you like to spin again? Y/N"); char ans = in.next().charAt(0); if (ans == 'Y'){ reSpin =true; }else if (ans == 'N'){

我试图提示用户再次旋转,而我的“while”表达式总是返回为false。。。有人有什么想法吗

reSpin = false;
if (reSpin == false){
    System.out.println("Would you like to spin again? Y/N");
    char ans = in.next().charAt(0);
   if (ans == 'Y'){
       reSpin =true;

   }else if (ans == 'N'){
       System.out.println("Thank you for playing!");
   }else {
       while ((ans != 'N') || (ans != 'Y')) {
           System.out.println("Invalid answer, please only enter Y/N");
           System.out.println("Would you like to spin again? Y/N");
           ans = in.next().charAt(0);
       }
   }


}

您可能希望使用:

   while ((ans != 'N') && (ans != 'Y')) {

检查以查看
ans
不是N也不是Y。如果在那里使用
|
(或),那么它将检查
ans
不是N,也不是Y(这对于
ans
的任何值都是真的)。

|
如果任一侧的表达式之一为真,则返回真

如果
ans
Y
,则
ans!='N'
为真,因此整个表达式
(ans!=“N”)| |(ans!=“Y”)
为真。如果
ans
N
,则
ans!='Y'
为true,因此整个表达式为true


你需要
(ans!=“N”)和&(ans!=“Y”)
,这表示“
ans
不是
'N'
ans
也不是
'Y'

ans
不能同时是'N'和'Y',因此它总是不等于'N'或不等于'Y'。您可能希望将其更改为:

while ((ans != 'N') && (ans != 'Y'))

这确保了它既不等于“N”,也不等于“Y”。

相当简单:根据您的比较,
ans
必须同时为
Y
N

Y
=
N
?如果
ans
Y
,则它不等于
N
。那么
N
==
Y
呢?如果
ans
N
则不是
Y
。因此,没有一个字母可以同时满足这两个条件。此外,如果您应用,那么您的表达式可以写成
((ans=='N')&&&(ans=='Y'))
,这可能更清楚。感谢@ElliottFrisch提到DeMorgan!这是我今天看到的第二个可以用这些简单规则解决的问题!我知道。幸运的是,我们在这里使用计算机:要么是,要么不是。