在C#中的TryParse和使用while循环。

问题描述 投票:0回答:2

用户的输入应该在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;

c# while-loop tryparse
2个回答
1
投票

我会写类似于你已经有的代码,但我会改名为 TrueisValid 并使用 dowhile 循环。

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);

现在,如果数字是有效的,我们就可以简单地脱离循环了。

P.S.你会看到我把数字条件换了一下,使它们变成了有效性检查,所以...。< 成为 >=> 成为 <=.

另外,不要调用一个类似于 True. 想象一下,你正在阅读一个较长的方法,你遇到了这一行(在你写了几个月之后)。

while (True)

那是一个无尽的循环,对吗?哦,不!是变量 True,而不是常数 true. 现在想象一下,再往上你有bool True = false;. 如果你读得很快,你可能会误解代码的作用。即使你没有,你也要花更多的心思去理解发生了什么。


1
投票

使用do while .

int i = 0;

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

} while (!True);
© www.soinside.com 2019 - 2024. All rights reserved.