无效的二次方程式求解器

时间:2018-07-22 15:09:30

标签: c# equation-solving

我已经创建了这个方程求解器(我知道这很令人困惑,也许我犯了一些愚蠢的错误,但是我最近才开始),                                    但它不起作用。它不会在控制台上打印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");

输出为:

  

输入系数a

     

1   输入系数b

     

3

     

输入系数c

     

2

     

1

     

每个连续曲的内容。 。

1 个答案:

答案 0 :(得分:2)

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

单个=分配变量,==比较变量。

您也不需要在if子句中强制转换为布尔值,如果您需要这样做,则您应该三思而后行。