先定义一个一元二次方程类,具有属性a,b,c,有求根方法要求在构造方法中对a,b,c进行初始化定义主类Test测试其功能
时间: 2024-10-25 10:10:47 浏览: 27
首先,我们创建一个名为`QuadraticEquation`的一元二次方程类,它包含三个属性`a`, `b`, 和 `c`,代表一般形式的二次方程`ax^2 + bx + c = 0`。这个类还需要一个构造方法来初始化这些属性,并添加一个计算解(即根)的方法。
```java
public class QuadraticEquation {
private double a;
private double b;
private double c;
// 构造方法,用于初始化参数
public QuadraticEquation(double a, double b, double c) {
if (a == 0) { // 防止除数为零的情况
throw new IllegalArgumentException("Coefficient 'a' cannot be zero.");
}
this.a = a;
this.b = b;
this.c = c;
}
// 求根方法,使用公式(-b ± sqrt(b^2 - 4ac)) / 2a
public double[] calculateRoots() {
double discriminant = Math.pow(b, 2) - 4 * a * c;
if (discriminant < 0) {
return new double[0]; // 如果判别式小于0,方程无实数解,返回空数组
} else {
double root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
double root2 = (-b - Math.sqrt(discriminant)) / (2 * a);
return new double[]{root1, root2};
}
}
}
```
然后,在`Test`主类中,我们可以编写一个测试用例来验证这个`QuadraticEquation`类:
```java
public class Test {
public static void main(String[] args) {
// 创建一个实例并初始化系数
QuadraticEquation eq = new QuadraticEquation(1, -3, 2);
// 计算并打印根
try {
double[] roots = eq.calculateRoots();
for (double root : roots) {
System.out.println("Root: " + root);
}
} catch (IllegalArgumentException e) {
System.out.println("Invalid equation: " + e.getMessage());
}
}
}
```
在这个例子中,如果系数`a`不是0,那么它将计算并输出两个根;如果`a`为0,则会捕获`IllegalArgumentException`,因为二项式方程不能表示线性方程。
阅读全文