编写一个类SquareEquation,该类封装了一元二次方程共有的属性和功能,即该类含有刻画方程系数的3个成员变量a,b,c以及计算实根的方法getRoots,并用数据测试该类的正确性。要求:该类的所有对象共享常数项,使用简单的变量名
时间: 2024-10-25 10:17:18 浏览: 23
jiefangcheng.rar_一元二次方程
为了编写一个表示一元二次方程的类`SquareEquation`,我们可以按照以下步骤进行:
首先,我们需要定义三个私有成员变量`a`, `b`, 和 `c`,分别代表一元二次方程的系数。由于题目要求所有的对象共享常数项(这里我们通常认为常数项是1),所以我们不需要额外的常数变量。同时,我们将使用简单易懂的变量名。
```java
public class SquareEquation {
private float a;
private float b;
private float c;
// 构造函数接收三个系数作为参数
public SquareEquation(float a, float b, float c) {
this.a = a;
this.b = b;
this.c = c;
}
// 计算一元二次方程的实根(使用求根公式)
public float[] getRealRoots() {
// 判别式
float discriminant = b * b - 4 * a * c;
// 当判别式大于0时,存在两个实根
if (discriminant > 0) {
return new float[] {
(-b + Math.sqrt(discriminant)) / (2 * a),
(-b - sqrt(discriminant)) / (2 * a)
};
}
// 当判别式等于0时,有一个实根(重复根)
else if (discriminant == 0) {
return new float[] {-b / (2 * a)};
}
// 当判别式小于0时,无实根,返回复数根
else {
double imaginaryPart = Math.sqrt(-discriminant) / (2 * a);
return new float[] {
-b / (2 * a), // 实部
(float)(imaginaryPart) // 虚部
}; // 注意转换虚部为浮点型
}
}
}
```
测试这个类时,可以创建几个`SquareEquation`的对象并验证它们的`getRealRoots`方法返回的结果:
```java
public class Main {
public static void main(String[] args) {
SquareEquation eqn1 = new SquareEquation(1, -3, 2);
SquareEquation eqn2 = new SquareEquation(1, 0, 0); // 一个根的情况
SquareEquation eqn3 = new SquareEquation(1, -1, -1); // 两个相同的复根
float[] roots1 = eqn1.getRealRoots();
float[] roots2 = eqn2.getRealRoots();
float[] roots3 = eqn3.getRealRoots();
System.out.println("Eqn 1 Roots: " + Arrays.toString(roots1));
System.out.println("Eqn 2 Roots: " + Arrays.toString(roots2));
System.out.println("Eqn 3 Roots: " + Arrays.toString(roots3));
// 进行一些边界条件测试和精度检查
}
}
```
阅读全文