【问题标题】:C# Do-While statement to validate user inputC# Do-While 语句来验证用户输入
【发布时间】:2013-11-02 13:02:10
【问题描述】:

我想创建一个简单的 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");

【问题讨论】:

  • 所以即使用户输入"n",循环应该继续询问他们是否要掷骰子?这似乎不太直观。

标签: c# visual-studio while-loop do-while


【解决方案1】:

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

请改用 AND &&

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

【讨论】:

    【解决方案2】:

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

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

    因为你想确定答案还不是 Y 并且答案也不是 N。当它都不是时循环。希望这会有所帮助!

    【讨论】:

    • 打败我。目前,如果您输入“Y”,则条件答案!=“N”将为真,如果您输入“N”,则条件答案!=“Y”将为真,因此您被卡住了。
    • 我以为 ||是或和 && 是和?我的逻辑是它不能同时是 Y 和 N,所以它要么是要么......我只是尝试 && 并且它有效,但我真的不明白它为什么有效。
    • 不管怎样,谢谢...
    • 布尔逻辑有时可以成为真正的脑筋急转弯。如果它适合您,请接受答案。谢谢!
    【解决方案3】:

    改变||到 &&,这应该会为您解决问题。

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

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

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

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

    while(!(answer == "Y" || answer == "N")
    

    【讨论】:

      【解决方案4】:

      两件事

      1. 正如大家所说,将|| 替换为&&
      2. 将用户输入的大写字母与YN 匹配,因为用户可以输入yYy,都是用户的积极决定。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-13
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-10
        • 2018-05-29
        相关资源
        最近更新 更多