验证字符串输入和返回双输出的方法

时间:2016-04-17 05:39:42

标签: c# validation casting

我想创建一个通用方法来根据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;
}

我该如何解决这个问题?我已经测试过投射方法,但那是不可能的。

一个彻底的答案会被赞赏,我对此很陌生。

1 个答案:

答案 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)