我正在尝试在c#中使用TryParse
方法。
我正在创建一个从用户获取输入的程序,如果它是整数,则返回一个变量。当输入有效整数时,程序工作正常,但是一旦我输入无效数字12sd
,它就会返回a=0
。错误在哪里。
public int checkValidNumber()
{
Program obj = new Program();
int a = 0;
string str = Console.ReadLine();
if(!int.TryParse(str, out a))
{
Console.WriteLine("Please enter a valid number");
obj.checkValidNumber();
}
return a;
}
使用
在Main中调用Program obj = new Program();
int a = obj.checkValidNumber();
如果Program是一个类,请考虑一个控制台应用程序
答案 0 :(得分:2)
您应该将obj.checkValidNumber();
替换为:
a = obj.checkValidNumber();
//Or
return obj.checkValidNumber();
此外,checkValidNumber
是Program
的成员函数,没有理由在每次调用中创建Program
的新实例
public int checkValidNumber()
{
int a=0;
if(!int.TryParse(Console.ReadLine(), out a))
{
Console.WriteLine("Please enter a valid number");
return checkValidNumber();
}
return a;
}
但最好使用while循环,而不是递归调用:
public int checkValidNumber()
{
int a=0;
while(!int.TryParse(Console.ReadLine(), out a))
{
Console.WriteLine("Please enter a valid number");
}
return a;
}
如果使用C#7.0,请参阅TryParse
的{{3}}