提问人:Versst 提问时间:9/18/2023 最后编辑:wohlstadVersst 更新时间:9/18/2023 访问量:91
控制台中的 C#“不是数字”
c# "not a number" in console
问:
当我尝试获取 x1 和 x2 的值时,控制台告诉我 x1 不是数字,x2 是?
代码如下:
static void Main(string[] args)
{
long a, b, c;
double x1, x2, D;
Console.WriteLine("Write the numbers a, b, c: ");
string[] names = Console.ReadLine().Split(" ");
a = long.Parse(names[0]);
b = long.Parse(names[1]);
c = long.Parse(names[2]);
try
{
D = Math.Pow(b, 2) - 4 * a * c;
if (D > 0)
{
x1 = (-b + Math.Sqrt(D)) / (2.0 * a);
x2 = (-b - Math.Sqrt(D)) / (2.0 * a);
Console.WriteLine($"x1 = {x1}, x2 = {x2}");
}
if (D == 0)
{
x1 = (-b) / (2 * a);
if (a != 0)
{
Console.WriteLine($"x1 = x2 = {x1}");
}
if (a == 0) { Console.WriteLine($"x = {x1}"); }
}
if (D < 0)
{
Console.WriteLine("there are no roots");
}
}
catch
{
if (a == 0 && b == 0 && c == 0)
{
Console.WriteLine("x - any number");
}
else
{
Console.WriteLine("there are no solutions");
}
}
}
我更改了 x1 和 x2 的数据类型,这导致猫开始写信给我“没有解决方案”(在捕获行上) 我用了数字 0 1 0 和 0 1 2
答:
0赞
DevOrlandoAguilera
9/18/2023
#1
在数学中,我们不能除以 0 永不,当 a 等于 0 时,您需要放置一个逻辑来处理这种情况
1赞
Elec1
9/18/2023
#2
对于数据 0 1 0,得到 D = 1。因此,您进入条件 D > 0 的分支。尝试计算 x1 和 x2,您正在除以变量 a,变量为零。结果是 NaN。 对于您的数据集 0 1 2,情况完全相同:D = 1,a = 0,导致 x1 和 x2 的 NaN。
评论
double
x1 = (-b) / (2 * a);
x1
b
a