我以前已经创建了一个简单的计算器,现在我试图通过内置更多的错误处理来对其进行改进。我试图调用一个函数以读取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();
}
}
答案 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();
}