用java设计并实现一元二次方程类 若不是一元二次方程,抛出异常 测试该类,若有实根求之,若没有,显示“无实根”
时间: 2023-05-11 15:06:42 浏览: 57
好的,以下是用 Java 设计并实现一元二次方程类的代码:
```java
public class QuadraticEquation {
private double a, b, c;
public QuadraticEquation(double a, double b, double c) throws Exception {
if (a == 0) {
throw new Exception("Not a quadratic equation!");
}
this.a = a;
this.b = b;
this.c = c;
}
public double getDiscriminant() {
return b * b - 4 * a * c;
}
public double getRoot1() {
return (-b + Math.sqrt(getDiscriminant())) / (2 * a);
}
public double getRoot2() {
return (-b - Math.sqrt(getDiscriminant())) / (2 * a);
}
public String solve() {
double discriminant = getDiscriminant();
if (discriminant < 0) {
return "No real roots!";
} else if (discriminant == 0) {
return "One real root: " + getRoot1();
} else {
return "Two real roots: " + getRoot1() + " and " + getRoot2();
}
}
}
```
你可以使用以下代码来测试该类:
```java
public class TestQuadraticEquation {
public static void main(String[] args) {
try {
QuadraticEquation qe1 = new QuadraticEquation(1, -3, 2);
System.out.println(qe1.solve()); // Two real roots: 2.0 and 1.0
QuadraticEquation qe2 = new QuadraticEquation(1, 2, 1);
System.out.println(qe2.solve()); // One real root: -1.0
QuadraticEquation qe3 = new QuadraticEquation(1, 1, 1);
System.out.println(qe3.solve()); // No real roots!
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
```
如果输入的系数是一元二次方程的系数,那么程序会输出方程的根;如果输入的系数不是一元二次方程的系数,程序会抛出异常并输出错误信息。