while循环不退出

本文关键字:退出 循环 while | 更新日期: 2023-09-27 18:08:17

关于c#的一个小问题。我已经在下面展示了我的代码,我不明白为什么循环永远不会关闭,当用户输入"A"或"B"等时,Do While循环应该关闭,可能听起来像一个愚蠢的问题,我刚刚开始c#

do
{
    Console.WriteLine("What one would you like to buy? A B C or D");
    a = Convert.ToChar(Console.ReadLine());
    Console.WriteLine(a);
} while (a != 'A' || a != 'B' || a != 'C' || a != 'D');

while循环不退出

您需要使用"&&"而不是"||",因为您想在不输入a, b, c或d时退出。目前它将永远继续运行,因为a总是不是'a'或'b'。

除了修复您的问题之外,我建议您采用更安全和更清晰的方法,因为如果用户输入多个或少于一个字符,您的代码将抛出异常,并且还强制用户按ENTER

使用这段代码,用户只需要按一个键,无论它是大写还是小写:

char a;
do
{
    Console.WriteLine("Which one would you like to buy? A B C or D");
    a = Char.ToUpper(Console.ReadKey().KeyChar);
    Console.WriteLine();
} while (!"ABCD".Contains(a));

用AND (&&)代替OR条件!因为如果您键入'A', (A == 'A'),那么" A != 'B'"为真并且OR条件为真…

你应该使用&&以你的状况。您希望在用户输入大写或小写字母A或B时停止循环。在顺序词中,只有当用户输入的内容不是A也不是B(大写或小写)