c# - 尝试比较 C# 中的字符

标签 c# input while-loop compare character

我是 C# 的新手,我已经开始学习它以拓宽我可以使用的编程语言,但是我遇到了一个小问题,我在 C 和 Java 中都没有遇到过。

我正在尝试从键盘获取用户响应,然后将其与可能的情况进行比较,如果这些情况都不匹配,那么我希望用户必须重复该过程,直到他输入了正确的值。

String input = Console.ReadLine();

while ((input[0] != 'N') || (input[0] != 'Y'))
    input = Console.ReadLine();       
if (input[0] == 'N')
{
    Console.WriteLine("NO");
    Console.ReadKey();
}
else if (input[0] == 'Y')
{
    Console.WriteLine("YES");
    Console.ReadKey();
} 

到目前为止,这不是我尝试过的最有效的方法,我也尝试过做一个 do while 循环和许多其他变体。

我遇到的问题是,当 while 循环没有被激活时,一切正常,但是当我添加它时,它总是进入循环,即使输入是 N 或 Y,也永远不能离开循环,即使它很明显是错误的。

如果有人可以告诉我一些关于为什么会发生这种情况的见解,或者如果有人可以提出更好的方法来做到这一点,我们将不胜感激。谢谢。

卡里姆

最佳答案

现在,您的 while 语句中的条件将始终为真。对此进行测试的一个好方法是在测试 while 循环的地方放置一个断点,然后为条件的每个部分“添加监视”。

改变

while ((input[0] != 'N') || (input[0] != 'Y'))

while ((input[0] != 'N') && (input[0] != 'Y'))

关于c# - 尝试比较 C# 中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14000504/

相关文章:

C - while 和 for 循环的奇怪行为

c# - 流读取问题

c# - 部署 C# 应用程序,但在 Beta 测试中由于日期格式而崩溃

c# - Linq 查询等效于存在多个条件

c# - 如何将字符串长度限制为特定数字?

algorithm - while循环时间复杂度

angularjs表单,输入值以编程方式(通过代码)更改,未提交给 Controller

java - 完全使用 Java 重定向 CMD.exe 进程的输入/输出/错误流

javascript - 滚动到 html 输入的插入符位置

c - 如何在一个循环中组合序列号和null?