首页 > 解决方案 > 如果不正确,请再次提问,直到正确为止

问题描述

请在下面查看我的代码。

Console.WriteLine("Enter a number between 1 and 5");
string _numberInt = Console.ReadLine();
Convert.ToInt32(_numberInt);

if (_numberInt != "1, 5")
{
    throw new System.ArgumentException("Please use a number between 1-5.");
}

我正在尝试编写代码,以便如果用户没有输入 1 到 5 之间的数字,它将引发异常。然后我希望它返回并再次提出问题,直到它是正确的。

在这个当前实例中,它会简单地跳过这个并且控制台将关闭,同时也会忽略我的其余代码。请有人帮我理解我需要在这里做什么?

在任何人提出任何建议之前,我编码的时间不长,我正在尝试尽可能多地学习。请留下建设性意见。

标签: c#

解决方案


在尝试将输入从字符串转换为数字后,您需要使用>=and运算符来检查输入:<=

while(true)
{
    Console.WriteLine("Enter a number between 1 and 5");
    var input = Console.ReadLine();

    if(int.TryParse(input, out var value) && value >= 1 && value <= 5)
    {
        Console.WriteLine("Thanks");
        break;
    }
    else
    {
        Console.WriteLine("invalid input")
    }
}

请注意,您永远不应该将异常用作某种廉价的流控制。它们用于报告您通常无法恢复的异常情况。在您的程序中,无效值不是例外,而是常态,您应该适当地处理它。


推荐阅读