二次方程求解器不起作用

quadratic equation solver that not work

我创建了这个方程求解器(我知道这很令人困惑,也许我犯了愚蠢的错误,但我最近才开始), 但它不起作用。它不会在控制台上打印 x1 和 x2。 你能帮帮我吗?

Console.WriteLine("input the coefficent a");
double a = int.Parse(Console.ReadLine());

Console.WriteLine("input the coefficent b");
double b = int.Parse(Console.ReadLine());

Console.WriteLine("input coefficent c");
double c = int.Parse(Console.ReadLine());

double D = Math.Pow(b,2) - 4*(a*c);
Console.WriteLine(D);

double x1;
double x2;

if (Convert.ToBoolean(D = 0))
{
    x1 =  Convert.ToInt32((-b)) / (2 * Convert.ToInt32(a));
    x2 = Convert.ToInt32((-b)) / (2 * Convert.ToInt32(a));
    Console.WriteLine(x1);
    Console.WriteLine(x2);

}
else if (Convert.ToBoolean(D > 0))
{
    x1 = (-b - (Math.Sqrt( Math.Pow(b,2) - 4 * a * c)) / 2 * a);
    x2 = (-b + (Math.Sqrt(Math.Pow(b,2) - 4 * a * c)) / 2 * a);
    Console.WriteLine(x1);
    Console.WriteLine(x2);
}
else if (Convert.ToBoolean(D < 0))
    Console.WriteLine("the equation has no real roots");

输出为:

input the coefficent a

1 input the coefficent b

3

input coefficent c

2

1

Premere un tasto per continuare . . .

if(Convert.ToBoolean(D = 0)) 不是你想要的。它将 0 分配给 D,returns 0 并将其转换为 false。您想要 if (D == 0) 以及 else if(D > 0)else if(D < 0)

单个 = 赋值给变量,== 比较它们。

你也不需要在 if 子句中将条件转换为布尔值,如果你需要这样做,如果你做错了什么,你应该三思而后行。