设计一个类,名字为QE,QE类是用来计算一元二次方程ax 2 +bx+c=0的平方根。这个类包括: 私有变量a,b和c表示三个系数; 以a,b和c为参数的初始化方法; a,b,c各自的访问方法; 名为get_d()的方法返回判别式,即b 2 −4ac; 名为get_root_1()和get_root_2()的方法分别计算方程的两个根。这些方法只能在判别式b 2 −4ac非负时才有用,判别式为负,则这些方法返回0. 任务:编写这个类,同时编写测试程序,用户输入a、b和c的值,然后按样例显示结果
时间: 2024-03-08 08:46:25 浏览: 141
好的,下面是 QE 类的代码实现:
```java
public class QE {
private double a, b, c;
public QE(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double getA() {
return a;
}
public double getB() {
return b;
}
public double getC() {
return c;
}
public double getD() {
return b * b - 4 * a * c;
}
public double getRoot1() {
double d = getD();
if (d < 0) {
return 0;
}
return (-b + Math.sqrt(d)) / (2 * a);
}
public double getRoot2() {
double d = getD();
if (d < 0) {
return 0;
}
return (-b - Math.sqrt(d)) / (2 * a);
}
}
```
这个类有三个私有变量 a、b 和 c,以及一个初始化方法 QE(double a, double b, double c),分别用来表示一元二次方程的三个系数。
此外,还有三个访问方法 getA()、getB() 和 getC(),用来获取 a、b 和 c 的值。
有一个名为 getD() 的方法,用来计算判别式 b^2 - 4ac 的值,即方程的根的情况。
有两个方法 getRoot1() 和 getRoot2(),用来计算方程的两个根。这两个方法只有在判别式非负时才有用,否则返回 0。
下面是测试程序的代码,用户输入 a、b 和 c 的值,然后调用 QE 类的方法计算方程的根,并输出结果:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入a、b、c的值:");
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
QE qe = new QE(a, b, c);
double d = qe.getD();
if (d < 0) {
System.out.println("方程无实数根");
} else if (d == 0) {
System.out.println("方程有一个实数根:" + qe.getRoot1());
} else {
System.out.println("方程有两个实数根:");
System.out.println("x1 = " + qe.getRoot1());
System.out.println("x2 = " + qe.getRoot2());
}
}
}
```
这个程序先让用户输入 a、b 和 c 的值,然后创建 QE 类的对象 qe,并调用它的 getD() 方法计算判别式的值。
如果判别式小于 0,说明方程无实数根;如果判别式等于 0,说明方程有一个实数根,调用 getRoot1() 方法即可;如果判别式大于 0,说明方程有两个实数根,分别调用 getRoot1() 和 getRoot2() 方法即可。
阅读全文