通过验证输入的奇数/偶数

时间:2017-07-02 15:10:32

标签: c# exception input

我试图制作一个简单的奇数/偶数程序,但我想比较用户输入的数字。当我输入任何不是数字的符号时,我得到第二个例外,但是当我按下输入即。没有任何价值,我仍然得到第二个,除了第一个,当我不给任何价值时,我试图得到。我的问题是当我按下回车时如何获得第一个异常文本,因为现在我只得到第二个,无论我输入什么。

Console.WriteLine("Enter a number: ");
        try
        {
            var number = int.Parse(Console.ReadLine());
            if (number % 2 == 0)
                Console.WriteLine($"Entered number {number} is even.");

            else
                Console.WriteLine($"Entered number {number} is odd.");
        }
        catch (ArgumentNullException)
        {
            Console.WriteLine("You need to enter some value.");
        }

        catch (Exception)
        {
            Console.WriteLine("You need to enter a number.");
        }

3 个答案:

答案 0 :(得分:2)

试试这个:

var str = Console.ReadLine();
if (string.IsNullOrEmpty(str))
{
    Console.WriteLine("You need to enter some value.");
}
else
{
    int number;
    if (!int.TryParse(str, out number))
    {
        Console.WriteLine("You need to enter a number.");
    }
    else
    {
        if (number % 2 == 0)
            Console.WriteLine($"Entered number {number} is even.");
        else
            Console.WriteLine($"Entered number {number} is odd.");
    }
}

答案 1 :(得分:2)

您应该抓住FormatException,以防您按下输入,因为string.Empty传递给int.Parse。仅当传递给ArgumentNullException的输入值为int.Parse时,才会引发null。下面是如何执行此操作并根据输入值编写不同消息的示例:

Console.WriteLine("Enter a number: ");
string input = Console.ReadLine();
try
{
    var number = int.Parse(input);
    if (number % 2 == 0)
        Console.WriteLine($"Entered number {number} is even.");

    else
        Console.WriteLine($"Entered number {number} is odd.");
}
catch (FormatException exc)
{
    if(string.IsNullOrEmpty(input))
    {
        Console.WriteLine("You need to enter some value.");
    }
    else
    {
        Console.WriteLine("You need to enter a number.");
    }

}

catch (Exception exc)
{
    Console.WriteLine("You need to enter a number.");
}

答案 2 :(得分:0)

如果您没有输入任何值,则该值不是 null 而是“”(空字符串),这就是为什么它不是 ArgumentNullException

George Alexandria的建议

    string s = Console.ReadLine(); 
if(s == "")
{ Console.WriteLine("You need
    to enter some value."); }