//求解一元二次方程ax^2+bx+c=0的实根和复根,Test类是主类
class OnceBasicQuadraticEquation  //求解一元二次方程ax^2+bx+c的实根和复根的类,其中getRoot()方法求根和显示根
{
    private double a;        //方程的二次项系数
    private double b;        //方程的一次项系数
    private static double c;  //方程的常数项
    //以上三个成员变量分别是方程的系数
   
    OnceBasicQuadraticEquation()  //无参构造方法
    {
        a = 0;
        b = 0;
        c = 0;
    }
   
    OnceBasicQuadraticEquation(double a,double b,double c)  //有参构造方法
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }
   
    public void setA(double a)
    {
        this.a = a;
    }
   
    public double getA()
    {
        return a;
    }
   
    public void setB(double b)
    {
        this.b = b;
    }
   
    public double getB()
    {
        return b;
    }
   
    public void setC(double c)
    {
        this.c = c;
    }
   
    public double getC()
java源代码加密    {
        return c;
    }
    //以上六个方法分别对应三个系数的置取方法
   
    public double getDlt()  //计算判别式Δ=b^2-4ac的值
    {
        double result = Math.pow(b,2) - 4 * a * c;
        return result;
    }
   
    private double getRightRoot()  //求解右侧较大实根的方法
    {
        double rightRoot = 0;
        rightRoot = (-b + Math.sqrt(getDlt())) / (2 * a);
        return rightRoot;
    }
   
    private double getLeftRoot()  //求解左侧较小实根的方法
    {
        double leftRoot = 0;
        leftRoot = (- b - Math.sqrt(getDlt())) / (2 * a);
        return leftRoot;
    }
   
    public void getRoot()  //求解并显示实根或复根的方法
    {
        if(a==0)
        {
            if(b==0)
            {
                if(c==0)
                {
                    System.out.println("一元二次方程:" + getA() + "x^2+"  //a、b、c全为零时,定义方程有无穷多解。
                                                        + getB() + "x+"
                                                        + getC() + "\t有无穷多解。");
                }
                else
                {
                    //二次项和一次项系数为零,但常数项不为零,方程变为不等式,无解。
                    System.out.println("一元二次方程:" + getA() + "x^2+"
                                                        + getB() + "x+"
                                                        + getC() + "\t无解。");
                }
            }
            else
            {
                //二次项系数为零,一次项系数不为零,方程是一次方程,有唯一解。
                double result = 0;
                result = -getC() / getB();
                System.out.println("一元二次方程:" + getA() + "x^2+"
                                                      + getB() + "x+"                                       
                                                      + getC() + "\t有唯一解:" + result);
            }
        }
        else  //二次项系数不为零,方程有两个实根或复根。
        {
            if(getDlt()==0)  //判别式Δ=b^2-4ac=0,方程有两个相等实根。
            {
                double result = 0;
                result = -getB() / (2 * getA());
                System.out.println("一元二次方程:" + getA() + "x^2+"
                                                      + getB() + "x+"                                       
                                                      + getC() + "\t有唯一解:" + result);
            }
            else if(getDlt()>0)  //判别式Δ=b^2-4ac>0,方程有两个相异实根。
            {
                System.out.println("一元二次方程:" + getA() + "x^2+"
                                                      + getB() + "x+"                                       
                                                      + getC() + "\t有两个实根:" + getLeftRoot() + "和" + getRightRoot());
            }
            else  //判别式Δ=b^2-4ac<0,方程有两个复根。
            {
                //double imaginaryNumber1 = 0;
                double imaginaryNumber = 0;
                double realNumber = 0;
                imaginaryNumber = Math.sqrt(-getDlt()) / (2 * a);
                realNumber      = -getB() / (2 * a);
                System.out.println("一元二次方程:" + getA() + "x^2+"
                                                      + getB() + "x+"                                       
                                                      + getC() + "\t有两个复根:"
                                                      + realNumber + "±" + imaginaryNumber + "i");
            }
        }
    }
}
public class Test
{
    public static void main(String [] args)
    {
        OnceBasicQuadraticEquation e1 = new OnceBasicQuadraticEquation(4,13,3);
        e1.getRoot();
       
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。