我制作了一个自定义方法来打印行,然后读取用户输入,将其分配给双变量这是我的代码:
double result = 0;
double a, b;
while (true)
{
if (Double.TryParse(GetValue("Enter value for a "), out a)
&& Double.TryParse(GetValue("Enter value for b "), out b))
{
result = a + b;
break;
}
else
{
Console.WriteLine("invalid value please try again..");
continue;
}
}
public static double GetValue(string input )
{
double z1;
double value;
Console.WriteLine(input);
value = Console.ReadLine();
z1 = value;
return z1;
}
但我遇到了一个错误,无法将"double"转换为"string"。有人能解释一下我做错了什么吗?
问题出在行
value = Console.ReadLine();
但你可能已经知道了。ReadLine返回一个字符串。
最简单的修复方法是从GetValue返回一个字符串,因为您已经尝试在函数之外解析它:
public static string GetValue(string input )
{
Console.WriteLine(input);
return Console.ReadLine();
}
但一个可以说更干净的解决方案是在请求输入并从中返回双精度的函数中解决它:
double result;
double a, b;
a = GetValue("Enter value for a ");
b = GetValue("Enter value for b ");
result = a + b;
public static double GetValue(string input )
{
double value;
Console.WriteLine(input);
while (!Double.TryParse(Console.ReadLine(), out value))
{
Console.WriteLine("invalid value please try again..");
}
return value;
}
我认为这稍微好一点的原因是,您将解析逻辑隔离到函数中,因此只需要一个调用就可以加倍。TryParse。此外,如果有人为b键入了不正确的值,在您的代码中,他们需要从a的值开始,而在我的代码中他们只需要重试b。