问题描述
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}");
}