設計一個二次方程類QuadraticEquation,用於處理形如ax2 + bx + x = 0 (a≠0)的二次方程,成員如下:
私有成員a, b, c用於存儲係數;
含三個參數的構造方法,用於傳入a, b, c;
三個方法getA(), getB(), getC(),用於傳出係數;
一個方法getDiscriminant()用於傳出b2 - 4ac的值;
兩個方法getRoot1()和getRoot2()用來返回方程的兩個根。注意方程可能沒有實根,所以返回值定義爲String。
請提供一個測試類,測試上述所有方法。
<span style="font-family:Courier New;">import java.util.Scanner;
class Equation
{
private double a,b,c;
Equation(double a1,double b1,double c1){ //構造方法
a=a1;
b=b1;
c=c1;
}
//傳出係數a,b,c
public double getA(){return a;}
public double getB(){return b;}
public double getC(){return c;}
//傳出b^2-4ac的值
public double getDiscriminant(){
return b*b-4*a*c;
}
//求兩個根
private String getRoot1(){
String s=String.valueOf((-b+Math.sqrt(getDiscriminant()))/(2*a));
return s;
}
private String getRoot2(){
String s=String.valueOf((-b-Math.sqrt(getDiscriminant()))/(2*a));
return s;
}
//求解方程組
public void solveEq(){
if(getDiscriminant()<0){ //無解
System.out.println("方程無解!");
}
else if(getDiscriminant()==0){ //只有一個解
System.out.println("x1=x2="+getRoot1());
}
else{ //兩個解
System.out.println("x1="+getRoot1());
System.out.println("x2="+getRoot2());
}
}
}
public class QuadraticEquation {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
double a=input.nextDouble();
double b=input.nextDouble();
double c=input.nextDouble();
Equation eq=new Equation(a,b,c);
System.out.println("a="+eq.getA());
System.out.println("b="+eq.getB());
System.out.println("c="+eq.getC());
System.out.println("b^2-4*a*c="+eq.getDiscriminant());
eq.solveEq();
}
}</span>