【问题标题】:Try-parse C# infinite amount of times for user to enter a number?尝试解析 C# 无限次让用户输入数字?
【发布时间】:2021-11-25 17:11:21
【问题描述】:

我正在尝试学习如何使用TryParse(我对编程很陌生,所以如果这是一个愚蠢的问题,我很抱歉!)。我想这样做,以便用户可以再试多少次他们想要的,我想我可以用一个while循环和try-catch来做到这一点?但如果可能的话,我想学习如何使用 Try-parse 来做到这一点。我尝试使用 if else 语句进行尝试解析和 while 循环,但它不起作用,用户必须再试一次,但它保存了输入的第一件事,而不是第二件事。我试过了到处搜索,我发现了许多不同的方式来使用 try-parse,但不是以用户可以无限次尝试的方式。现在我已经做到了,以便用户可以尝试 3(使用下面的代码 - 告诉我是否应该在此处插入更多代码!)但如果有人对我如何做到这一点有提示,我将不胜感激用户获得无限次尝试!

提前谢谢你!

// Ask user to enter age, save information, clear program view
Console.WriteLine("Enter " + name + "`s age:");

int age;
string stringAge;
bool parseOkay;
stringAge = Console.ReadLine();
parseOkay = int.TryParse(stringAge, out age);

if (parseOkay == true)
{
}
else
{
    Console.WriteLine("Invalid numeric input.\nPlease Write in only one number:");
    stringAge = Console.ReadLine();
    parseOkay = int.TryParse(stringAge, out age);
    if (parseOkay == true)
    {
    }
    else
    {
        Console.WriteLine("Invalid numeric input.\nPlease Write in only one number:");
        stringAge = Console.ReadLine();
        parseOkay = int.TryParse(stringAge, out age);
        if (parseOkay == true)
        {
        }
        else
        {
            Console.WriteLine("Third attempt, invalid numeric input.\nPlease press enter to return to the menu and then try again.");
            Console.ReadLine();
            return;
        }
    }
}

【问题讨论】:

    标签: c# tryparse


    【解决方案1】:

    如果我是你,我会在 while loops 上做一些研究。

    使用 while 循环,您不仅可以简化这一过程,而且实际上还可以消除大量变量。

    例如,下面的代码会不断要求用户重新输入一个数字,直到他们提供一个有效的数字。

    int age;
    while(!int.TryParse(Console.ReadLine(), out age)){
        Console.WriteLine("Please enter a valid number.");
    }
    
    Console.WriteLine("You are " + age + " years old!");
    

    Here's a .NET Fiddle 使用此代码,您可以随意使用。

    关于 if 语句的附注: 如果语句正在检查条件(又名布尔值或布尔值),那么执行if(x == true) 是多余的。你可以简单地做if(x)

    除此之外,您的所有 if 语句都是空的,并且您的代码位于 else 块中。如果需要检查条件是否为假,可以使用逻辑否定运算符(也称为逻辑非运算符),它只是条件前的感叹号。所以,做

    if(!x){
       //Code here
    }
    

    和做的一样

    if(x){
    }
    else{
        //Code here
    }
    

    【讨论】:

    • 哇,非常感谢!真的很亲切!效果很好!但是怎么办!在 C# 中做?因为 != 表示不等于,但如果我写 while(!i=nt.TryParse(Console.ReadLine(), out age)){ Console.WriteLine("请输入有效数字。");所以它可能是“!”还有别的意思吗?
    • 也感谢您提供有关如何使 if 语句更好、更准确的提示!
    • ! 作为否定运算符意味着条件在 if 语句评估之前被翻转。例如,!true 将返回 false!false 将返回 true。如果您要比较 2 个对象,!= 将是合适的,但如果语句本身返回一个布尔值并且您只是希望它被翻转,您可以简单地将 ! 放在它之前。关于它的更多信息here
    • 你也可以用类似!=的方式查看。 != 表示“不等于”,!true 表示“不正确”。
    • 啊好吧!现在我明白了,谢谢!
    【解决方案2】:

    由于 tryParse 返回一个布尔值,您可以在 while loop 中使用该函数。 这是一个例子:

    int age;
    
    Console.WriteLine("Enter your age: ");
    while (!int.TryParse(Console.ReadLine(), out age))
    {
        Console.WriteLine("Invalid numeric input.\nPlease Write in only one number:");
    }
    

    【讨论】:

    • 谢谢!!乐于助人!
    • @JohannaH,不客气!乐于助人。
    猜你喜欢
    • 2015-03-25
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多