我想创建一个通用方法来根据ceratin规则验证用户输入。
这就是我调用方法的方法,我得到一个错误,因为字符串不能加倍:
Console.Write("Input the price of the beverage : ");
string priceInput = Console.ReadLine();
double priceInputVal = ValidateBrand(priceInput);
这是我正在调用的方法:
private double ValidatePrice(string priceInput)
{
bool success = true;
double priceOutput;
do
{
bool result = Double.TryParse(priceInput, out priceOutput);
if (result == false)
Console.WriteLine("Please, write a valid number");
else
success = false;
} while (success);
return priceOutput;
}
我该如何解决这个问题?我已经测试过投射方法,但那是不可能的。
一个彻底的答案会被赞赏,我对此很陌生。
答案 0 :(得分:0)
你的问题是如果priceInput
无法解析为双倍,你将进入一个无限循环。为避免这种情况,您可以更改ValidatePrice
方法:
private double? ValidatePrice(string priceInput)
{
double? priceOutput = default(double?);
Double.TryParse(priceInput, out priceOutput)
return priceOutput;
}
并称之为:
double? priceInputVal = null;
do
{
Console.Write("Input the price of the beverage : ");
priceInputVal = ValidateBrand(Console.ReadLine());
if (priceInputVal == null)
{
Console.WriteLine("Please, write a valid number");
}
}
while (princeInputVal == null)