【问题标题】:TryParse in C# and using the while loopC# 中的 TryParse 和使用 while 循环
【发布时间】:2020-06-04 08:51:53
【问题描述】:

用户输入应该在 0 到 10 之间,我想使用 tryparse 并检查输入是否正确,如果不正确,则应再次提示用户。我的代码如下所示,它只工作一次,但如果用户输入错误的数字,它会再次执行。在这种情况下,我应该把循环放在哪里?


 int number;
            bool True;
            Console.Write("Enter number between 0 t0 10: ");
            True = int.TryParse(Console.ReadLine(), out number);
                while (number < 0 || number > 10)
                {
             while (True)
                    Console.Write("Enter number between 0 t0 10: ");
                    int.TryParse(Console.ReadLine(), out number);

                }

            {
                Console.WriteLine("Please enter the correct number");

            }
            return number;

【问题讨论】:

  • 您需要对 both 调用 TryParse 的返回值执行 something - 以防他们输入 Bob。跨度>

标签: c# while-loop tryparse


【解决方案1】:

使用 do while 。

int i = 0;

do
{
   Console.Write("Enter number between 0 t0 10: ");
   True = int.TryParse(Console.ReadLine(), out number);

} while (!True);

【讨论】:

  • int i = 0; do { Console.Write("请输入 0 到 10 之间的数字:"); } while (!int.TryParse(Console.ReadLine(), out number));我建议删除真正的变量,因为它没有被使用,错误处理使用 bahtiyars 版本。
【解决方案2】:

我会编写与您已有的代码类似的代码,但我会将 True 重命名为 isValid 并使用 do/while 循环:

int number;
bool isValid = false;
do
{
    Console.Write("Enter number between 0 and 10: ");

    isValid = int.TryParse(Console.ReadLine(), out number) 
                  && number >= 0
                  && number <= 10;

    if (isValid)
    {
        Console.WriteLine("Please enter the correct number");
    }
}
while (!isValid);

更好的是,完全取消 isValid

int number;
do
{
    Console.Write("Enter number between 0 and 10: ");
    if (int.TryParse(Console.ReadLine(), out number) && number >= 0 && number <= 10)
    {
        break;
    }
    Console.WriteLine("Please enter the correct number");
}
while (true);

现在,如果数字有效,我们只需跳出循环。

附:你会看到我交换了数字条件来进行有效性检查,所以&lt; 变成了&gt;=&gt; 变成了&lt;=

另外,不要调用类似True 的变量。想象一下,您正在阅读更长的方法,并且遇到了这一行(在您编写它几个月后):

while (True)

这是一个无限循环,对吗?不好了!它是变量True,而不是常量true。现在想象一下你有bool True = false;。如果您阅读得很快,您可能会误解代码的作用。即使你不是,你也必须花更多的精力去理解正在发生的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2020-03-30
    • 2012-11-11
    • 2022-01-21
    相关资源
    最近更新 更多