3.编写一个类,该类封装了一元二次方程共有的属性和功能,即该类有刻画方程系数的3个成员变量以及计算实根的方法。要求:该类的所有对象共享常数项。写出详细java代码
时间: 2024-10-21 08:11:03 浏览: 45
为了创建一个表示一元二次方程的类,我们可以在Java中设计一个名为`QuadraticEquation`的类,它包含三个私有成员变量(系数a、b和c),其中c被视为常数项,因为它是固定不变的。同时,我们可以提供一个公有方法`calculateRoots`来计算并返回方程的实根。以下是详细的Java代码:
```java
public class QuadraticEquation {
// 定义常量项作为静态成员变量
private static double constantTerm = 0;
// 一元二次方程的系数
private double a;
private double b;
// 构造函数接受系数a和b
public QuadraticEquation(double a, double b) {
this.a = a;
this.b = b;
}
// 计算并设置常数项(这里假设只有一个公共的常数项)
public void setConstantTerm(double constantTerm) {
QuadraticEquation.constantTerm = constantTerm;
}
// 计算一元二次方程的实根
public double[] calculateRoots() {
double discriminant = b * b - 4 * a * constantTerm; // 计算判别式
if (discriminant > 0) { // 两个不同的实根
double root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
double root2 = (-b - Math.sqrt(discriminant)) / (2 * a);
return new double[]{root1, root2};
} else if (discriminant == 0) { // 只有一个实根(重根)
double root = -b / (2 * a);
return new double[]{root};
} else { // 无实根(虚根)
double realPart = -b / (2 * a);
double imaginaryPart = Math.sqrt(-discriminant) / (2 * a);
return new double[]{realPart, imaginaryPart};
}
}
// 仅用于演示,实际应用中不应公开实例变量
public double getA() {
return a;
}
public double getB() {
return b;
}
}
// 示例用法:
QuadraticEquation equation = new QuadraticEquation(1, 5); // x^2 + 5x
equation.setConstantTerm(6); // x^2 + 5x + 6
double[] roots = equation.calculateRoots();
```
阅读全文