2012-01-01 259 views
0

我不知道它是否只是我很厚,但我有一些验证代码来检查是或否的答案。c#!=操作员不能正常工作

我似乎无法得到它的工作我已经在我的程序中的其他地方使用的代码,它的工作原理,但我不能发现错误,如果有的话。无论如何,代码贯穿整个输入字符。

string correctDestenation = Console.ReadLine().ToLower(); 
while (correctDestenation != "y" || correctDestenation != "n") 
{ 
    Console.WriteLine(
     "Oops! You must enter a 'y' for yes and a 'n' for no"); 
    correctDestenation = Console.ReadLine().ToLower(); 
} 
+2

它不应该是||您必须使用&& – Baatar 2012-01-01 14:03:13

+5

在怀疑操作员之前,怀疑自己的逻辑和代码。 – Oded 2012-01-01 14:04:46

+3

我认为这是一个相当大胆的主张不平等运算符'!='不起作用。 – 2012-01-01 14:04:54

回答

8

您的逻辑错误。您想使用& &而不是||。

while (correctDestenation != "y" && correctDestenation != "n") 

,或者您可以使用De Morgan's Law,看看它的其他方式,这相当于:

while (!(correctDestenation == "y" || correctDestenation == "n")) 
+0

我知道这是简单的感谢 – bobthemac 2012-01-01 14:45:51

2

这条件总是被满足,作为一个字符将不等于“Y”或等于'n'。使用& &而不是||。

1

你怎么样使用AND运算符

while (correctDestenation != "y" && correctDestenation != "n") 
    { 
      Console.WriteLine("Oops! You must enter a 'y' for yes and a 'n' for no"); 
      correctDestenation = Console.ReadLine().ToLower(); 
    }