编写一个程序,求一元二次方程ax2+ bx + c =0的实根,系数 a 、 b 、 c 从键盘输入。(进行类的封装)Java
时间: 2024-09-26 22:13:03 浏览: 41
在Java中,我们可以创建一个名为`QuadraticEquationSolver`的类,用于处理一元二次方程的解法,并采用封装设计原则将系数作为私有变量。以下是一个简单的实现:
```java
import java.util.Scanner;
public class QuadraticEquationSolver {
private double a;
private double b;
private double c;
// 构造函数,接收用户输入的系数
public QuadraticEquationSolver(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
// 计算判别式
private double discriminant() {
return Math.pow(b, 2) - 4 * a * c;
}
// 检查方程是否有实根并计算根
public void calculateRoots() {
if (discriminant() >= 0) {
double root1 = (-b + Math.sqrt(discriminant())) / (2 * a);
double root2 = (- Math.sqrt(discriminant())) / (2 * a);
System.out.println("方程有两个实根:");
System.out.printf("根1: %.2f\n", root1);
System.out.printf("根2: %.2f\n", root2);
} else if (discriminant() == 0) {
double root = -b / (2 * a);
System.out.println("方程有一个实根:");
System.out.printf("根: %.2f\n", root);
} else {
System.out.println("方程无实数根,有复数根.");
}
}
// 主方法,获取用户输入并调用计算方法
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入a的值: ");
double a = scanner.nextDouble();
System.out.print("请输入b的值: ");
double b = scanner.nextDouble();
System.out.print("请输入c的值: ");
double c = scanner.nextDouble();
QuadraticEquationSolver equationSolver = new QuadraticEquationSolver(a, b, c);
equationSolver.calculateRoots();
scanner.close();
}
}
```
在这个示例中,用户可以输入一元二次方程的系数a、b、c,然后程序会计算并打印出实根。
阅读全文