我做了一个自定义方法来打印行,然后读取用户输入以将其分配给double变量这里是我的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
但面临一个错误,即我无法将'double'转换为'string'.有人能解释一下我做错了什么吗?
问题就在于此
value = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
但你可能已经知道了.ReadLine返回一个字符串.
最简单的解决方法是从GetValue返回一个字符串,因为你已经尝试在函数之外解析它:
public static string GetValue(string input )
{
Console.WriteLine(input);
return Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
但是一个可以说更清晰的解决方案是在函数中解决它,它会询问输入并从那里返回一个double:
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;
}
Run Code Online (Sandbox Code Playgroud)
我认为这稍微好一点的原因是因为你将解析的逻辑隔离到函数中,所以你只需要调用一次double.TryParse.此外,如果有人为b键入一个不正确的值,在你的代码中他们需要重新开始使用a的值,在我的代码中,他们只需要重试b.
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |