用Java编写一个类,该类封装了一元二次方程共有的属性和功能,即该类有刻画方程系数的 3 个成员变量以及计算实根的方法。要求:该类的所有对象共享常数项。
时间: 2023-06-01 17:02:55 浏览: 94
计算一元二次方程的根-Java代码实现
以下是一个封装了一元二次方程共有的属性和功能的Java类的示例代码:
```java
public class QuadraticEquation {
private static double constant; // 共享常数项
private double a;
private double b;
private double c;
public QuadraticEquation(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public void setConstant(double constant) {
QuadraticEquation.constant = constant;
}
public double getA() {
return a;
}
public double getB() {
return b;
}
public double getC() {
return c;
}
public double getConstant() {
return constant;
}
public double getDiscriminant() {
return b * b - 4 * a * c;
}
public double getRoot1() {
double discriminant = getDiscriminant();
if (discriminant < 0) {
return Double.NaN;
} else {
return (-b + Math.sqrt(discriminant)) / (2 * a);
}
}
public double getRoot2() {
double discriminant = getDiscriminant();
if (discriminant < 0) {
return Double.NaN;
} else {
return (-b - Math.sqrt(discriminant)) / (2 * a);
}
}
}
```
该类有四个成员变量:共享常数项 `constant` 和三个常规系数 `a`、`b`、`c`。`constant` 为静态变量,因此所有的对象共享它的值。类中的其他成员函数包括:构造函数 `QuadraticEquation()`、设置共享常数项的函数 `setConstant()`、获取各个系数的函数 `getA()`、`getB()`、`getC()`、`getConstant()`、计算判别式的函数 `getDiscriminant()`、计算实根的函数 `getRoot1()` 和 `getRoot2()`。
要在程序中使用该类,可以先通过构造函数创建一个对象,然后调用对象的各个成员函数来获取方程的系数和实根等信息。例如:
```java
QuadraticEquation equation = new QuadraticEquation(1, -5, 6);
equation.setConstant(1);
double a = equation.getA();
double b = equation.getB();
double c = equation.getC();
double constant = equation.getConstant();
double discriminant = equation.getDiscriminant();
double root1 = equation.getRoot1();
double root2 = equation.getRoot2();
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("constant = " + constant);
System.out.println("discriminant = " + discriminant);
System.out.println("root1 = " + root1);
System.out.println("root2 = " + root2);
```
运行上述代码,输出结果如下:
```
a = 1.0
b = -5.0
c = 6.0
constant = 1.0
discriminant = 1.0
root1 = 3.0
root2 = 2.0
```
可以看到,该类能够正确地计算出一元二次方程的系数和实根。
阅读全文