//求解一元二次方程ax^2+bx+c=0的实根和复根,Test类是主类classOnceBasicQuadraticEquation//求解一元二次方程ax^2+bx+c的实根和复根的类,其中getRoot()方法求根和显示根{privatedoublea;//方程的二次项系数privatedoubleb;//方程的一次项系数privatestaticdoublec;//方程的常数项//以上三个成员变量分别是方程的系数OnceBasicQuadraticEquation()//无参构造方法{a=0;b=0;c=0;}OnceBasicQuadraticEquation(doublea,doubleb,doublec)//有参构造方法{this.a=a;this.b=b;this.c=c;}publicvoidsetA(doublea){this.a=a;}publicdoublegetA(){returna;}publicvoidsetB(doubleb){this.b=b;}publicdoublegetB(){returnb;}publicvoidsetC(doublec){this.c=c;}publicdoublegetC(){returnc;}//以上六个方法分别对应三个系数的置取方法publicdoublegetDlt()//计算判别式Δ=b^2-4ac的值{doubleresult=Math.pow(b,2)-4*a*c;returnresult;}privatedoublegetRightRoot()//求解右侧较大实根的方法{doublerightRoot=0;rightRoot=(-b+Math.sqrt(getDlt()))/(2*a);returnrightRoot;}privatedoublegetLeftRoot()//求解左侧较小实根的方法{doubleleftRoot=0;leftRoot=(-b-Math.sqrt(getDlt()))/(2*a);returnleftRoot;}publicvoidgetRoot()//求解并显示实根或复根的方法{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{//二次项系数为零,一次项系数不为零,方程是一次方程,有唯一解。doubleresult=0;result=-getC()/getB();System.out.println(一元二次方程:+getA()+x^2++getB()+x++getC()+\t有唯一解:+result);}}else//二次项系数不为零,方程有两个实根或复根。{if(getDlt()==0)//判别式Δ=b^2-4ac=0,方程有两个相等实根。{doubleresult=0;result=-getB()/(2*getA());System.out.println(一元二次方程:+getA()+x^2++getB()+x++getC()+\t有唯一解:+result);}elseif(getDlt()0)//判别式Δ=b^2-4ac0,方程有两个相异实根。{System.out.println(一元二次方程:+getA()+x^2++getB()+x++getC()+\t有两个实根:+getLeftRoot()+和+getRightRoot());}else//判别式Δ=b^2-4ac0,方程有两个复根。{//doubleimaginaryNumber1=0;doubleimaginaryNumber=0;doublerealNumber=0;imaginaryNumber=Math.sqrt(-getDlt())/(2*a);realNumber=-getB()/(2*a);System.out.println(一元二次方程:+getA()+x^2++getB()+x++getC()+\t有两个复根:+realNumber+±+imaginaryNumber+i);}}}}publicclassTest{publicstaticvoidmain(String[]args){OnceBasicQuadraticEquatione1=newOnceBasicQuadraticEquation(4,13,3);e1.getRoot();}}