计算器错误中的C#递归语句

时间:2018-11-09 01:38:50

标签: c# recursion calculator

我以前已经创建了一个简单的计算器,现在我试图通过内置更多的错误处理来对其进行改进。我试图调用一个函数以读取int并进行尝试解析,如果无法重新调用该函数,直到TryParse()成功为止。

我的问题是,错误路径不会返回值,因此将无法编译。我确定我缺少一个简单的步骤,有人可以帮助我一些建议吗?是否可以在GetNumber()中解决此问题?还是应该在Main()中有条件地调用该函数?还要别的吗?

using System;

class Program
{
    static int GetNumber()
    {
        Console.WriteLine("Enter a number");
        string entry = Console.ReadLine();

        int num;

        bool res = int.TryParse(entry, out num);

        if (res == true)
        {
            return num;
        }

        if (res == false)
        {
            Console.WriteLine("You did not enter a proper number");
            GetNumber();
        }
    }

    static void Main()
    {
        int x = GetNumber();
    }
}

1 个答案:

答案 0 :(得分:1)

在递归GetNumber之前添加收益。在最终返回到您的Main方法之前,这将把递归的值返回到链中。

您可以完全删除第二条if语句,因为只有res为false时,您才能在那里。这不会影响功能,只会使其更易于阅读。

static int GetNumber(){
    Console.WriteLine("Enter a number");
    string entry = Console.ReadLine();
    int num;
    bool res = int.TryParse(entry, out num);
    if (res == true){
        return num;
    }

    Console.WriteLine("You did not enter a proper number");
    return GetNumber();        
}