在java中。编写一个类,该类封装了一元二次方程共有的属性和功能,即该类有刻画方程系数的3个成员变量以及计算实根的方法。要求:该类的所有对象共享常数项。
时间: 2024-05-13 21:15:38 浏览: 81
下面是一个Java类的示例,可以用于封装一元二次方程的属性和功能:
```java
public class QuadraticEquation {
private double a;
private double b;
private double c;
private static final double EPSILON = 1e-10;
public QuadraticEquation(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 getDiscriminant() {
return b * b - 4 * a * c;
}
public double getRoot1() {
double discriminant = getDiscriminant();
if (discriminant < -EPSILON) {
return Double.NaN;
} else {
return (-b + Math.sqrt(discriminant)) / (2 * a);
}
}
public double getRoot2() {
double discriminant = getDiscriminant();
if (discriminant < -EPSILON) {
return Double.NaN;
} else {
return (-b - Math.sqrt(discriminant)) / (2 * a);
}
}
}
```
在这个类中,我们定义了三个私有成员变量 `a`、`b` 和 `c`,分别表示一元二次方程的三个系数。我们还定义了一个常量 `EPSILON`,用于比较实数的大小。在构造函数中,我们使用这三个系数初始化对象。
我们还定义了四个公有方法:`getA`、`getB` 和 `getC` 用于获取系数,`getDiscriminant` 用于计算判别式,`getRoot1` 和 `getRoot2` 分别用于计算一元二次方程的两个根。需要注意的是,在计算根时,我们要考虑判别式的正负和零的情况,以及实数计算的舍入误差。
阅读全文