为什么((ans!='N')||(ans!='Y'))总是正确的?

时间:2015-05-13 23:07:15

标签: java while-loop boolean

我试图提示用户再次旋转,我的“while”表达式总是回复为假...任何人都有任何想法?

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);
       }
   }


}

4 个答案:

答案 0 :(得分:5)

您可能想要使用:

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

检查ans不是N 不是Y.如果你在那里使用||(或),那么它会检查{{1}不是N,或者不是Y(对于ans的任何值都是如此)。

答案 1 :(得分:4)

非常简单:根据您的比较,ans必须同时为YN

答案 2 :(得分:2)

如果任何一方的表达式中的任何一个为真,则

document.getElementById("houseGenderMale").checked = 'true'; 返回true。

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

您想要ans != 'Y',其中“(ans != 'N') && (ans != 'Y')不是ans 'N'也不是ans。”< / p>

答案 3 :(得分:1)

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

ans

这确保它不等于'N'并且不等于'Y'。