0

我想创建一个简单的 do-while 语句,以确保用户输入是 Y 或 N,如果不是,则要求他们再次输入。如果是 Y 或 N,则应用程序继续。这是我到目前为止所拥有的,但我的应用程序虽然只是卡在一个询问用户输入的循环中。C# 新手——感谢您的帮助。

    string answer = "";
    do
    {
        //Ask the user if they want to roll the dice
        Console.WriteLine("Would you like to roll the dice (y or n)?");
        //Get the user's response and validate that it is either 'y' or 'n'.
        answer = Console.ReadLine();
    } while (answer != "Y" || answer != "N");
4

4 回答 4

2

看起来像一个简单的布尔逻辑错误。

您的 while 语句应该是: while (answer != "Y" && answer != "N");

因为你想确定答案还不是 Y,答案也不是 N。循环,而它都不是。希望这可以帮助!

于 2013-10-24T01:53:44.407 回答
1

您的逻辑是 OR||而不是 AND &&。它总是要么不是要么不是YN因为它不能同时是两者。当它N不是Y,反之亦然。

请改用 AND &&

此外,您的比较区分大小写。考虑检查大小写。

于 2013-10-24T01:53:25.477 回答
1

更改 || 到 && ,这应该为你解决它。

另一种看待它的方式可能是这样的:

中断条件是每当答案为“Y”或答案为“N”时。

只要不满足中断条件,您就希望循环继续,这样您就可以拥有

(answer == "Y" || answer == "N") 然后不是结果

while(!(answer == "Y" || answer == "N")
于 2013-10-24T01:53:58.177 回答
1

2 件事

  1. 正如所有人所说,替换||&&
  2. 将用户输入的内容与您的Y&匹配大写,N因为用户可以输入y。AYy, 都是用户的积极决策。

answer.ToUpper() != "Y" && answer.ToUpper() != "N"

于 2013-10-24T02:01:35.013 回答