为什么至少输入一次无效整数后a=0的值
Why value of a=0 after entering atleast one time invalid integer
我正在尝试在 C# 中使用 TryParse
方法。
我正在创建一个程序,它从用户那里获取输入,如果它是整数,那么 return 到一个变量。当输入是有效整数时程序工作正常但是一旦我输入无效数字如 12sd
它 returns 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();
程序是 Class,请考虑控制台应用程序
您应该将 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,请参阅 new usage of an out variable TryParse
我正在尝试在 C# 中使用 TryParse
方法。
我正在创建一个程序,它从用户那里获取输入,如果它是整数,那么 return 到一个变量。当输入是有效整数时程序工作正常但是一旦我输入无效数字如 12sd
它 returns 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();
程序是 Class,请考虑控制台应用程序
您应该将 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,请参阅 new usage of an out variable TryParse