如何解决读取用户输入时的CS0029
我正在尝试编写计算器,但出现错误CS0029。 这是代码:
using System;
namespace Calculator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Calculator\n");
Rechnungplus();
}
static void Rechnungplus()
{
Console.WriteLine("after typing a/(every) number press enter.");
double a = Console.ReadLine();
double b = Console.ReadLine();
double c = a + b;
Console.WriteLine($"\n{a} + {b} = {c}");
}
}
}
我搜索了一个解决方案,但发现一个有类似问题的人提出了一个问题。有人说他/她应该尝试:
double a = (Console.ReadLine());
但这没用。
解决方法
Console.ReadLine
返回一个string
,而不是double,因此您需要
将其转换为一个。选项之一是:
double a = double.Parse(Console.ReadLine());
但是,如果无法解析字符串,则会抛出异常。不过,更安全的方法是使用Double.TryParse
,如果转换成功,它会返回一个布尔标记。例如:
double a;
while(double.TryParse(Console.ReadLine(),out a))
{
Console.WriteLine("Please enter a number:");
}
,
Console.Readline()
返回一个字符串。如果您想要double
,则必须对其进行解析。例如:
double a = Double.Parse(Console.Readline());
double b = Double.Parse(Console.Readline());
,
Console.ReadLine
返回一个string
。无法将其直接转换为double
。您应该使用double.Parse()
,它可以将string
解析为double
。一个例子:
double d = double.Parse(Console.ReadLine());
请注意,如果您将double.Parse
传递为无效值,则会throw an exception。更安全的选择是double.TryParse
。
Console.Readline()方法返回字符串。您必须先将其转换为double才能启动程序。
执行此操作:
double a = Convert.ToDouble(Console.ReadLine())
double b = Convert.ToDouble(Console.ReadLine())
或者更好。
static void Rechnungplus()
{
string temp;
bool isValid;
double a = 0,b = 0,c = 0;
Console.WriteLine("after typing a/(every) number press enter.");
isValid = false;
while (!isValid)
{
temp = Console.ReadLine();
if(double.TryParse(temp,out a))
{
isValid = true;
}
else
{
Console.WriteLine("Invalid input. Only (decimal) numbers are allowed.");
}
}
isValid = false;
while (!isValid)
{
temp = Console.ReadLine();
if (double.TryParse(temp,out b))
{
isValid = true;
}
else
{
Console.WriteLine("Invalid input. Only (decimal) numbers are allowed.");
}
}
c = a + b;
Console.WriteLine($"\n{a} + {b} = {c}");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。