在这个基础上,使其运用方法的重载函数
时间: 2024-09-19 18:04:17 浏览: 34
在上述代码中,如果你想让程序支持多种形式的一元二次方程,例如还可以处理含有常数项的二次多项式,你可以使用方法的重载(Overload)。在这种情况下,你可以创建一个包含多个重载版本的方法,每个版本接受不同的参数集来适应不同的表达式。以下是针对不同情况的重载函数的例子:
```java
import java.util.Scanner;
public class YiyuanErCi {
private static double[] roots = new double[2];
// 重载函数1:处理标准形式 ax^2 + bx + c 的一元二次方程
public static void quadratic(double a, double b, double c) {
if ((b * b) - (4 * a * c) < 0) {
System.out.println("no real root");
} else {
roots[0] = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a);
roots[1] = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a);
printRoots();
}
}
// 重载函数2:处理 ax^2 + bx 的形式,即含有常数项c = 0
public static void quadraticNoConstant(double a, double b) {
double discriminant = b * b;
if (discriminant > 0) {
roots[0] = -b / (2 * a);
roots[1] = discriminant / a;
printRoots();
} else if (discriminant == 0) {
roots[0] = roots[1] = -b / (2 * a);
printRoots();
} else {
roots[0] = (-b - Math.sqrt(discriminant)) / (2 * a);
printRoots();
}
}
// 共享的辅助函数,用于打印根
private static void printRoots() {
System.out.println("Roots are: " + roots[0] + ", " + roots[1]);
}
// 主函数,根据输入选择正确的重载方法
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the equation in standard form (ax^2 + bx + c):");
double a = scanner.nextDouble(), b = scanner.nextDouble(), c = scanner.nextDouble();
quadratic(a, b, c);
// 或者询问是否处理不含常数项的形式
System.out.println("\nDo you want to enter an equation without constant term? (y/n)");
String input = scanner.next();
if ("y".equalsIgnoreCase(input)) {
System.out.println("Enter equation in form ax^2 + bx:");
a = scanner.nextDouble(); b = scanner.nextDouble();
quadraticNoConstant(a, b);
}
scanner.close();
}
}
```
阅读全文