名字为getRoot1()和getRoot2()的方法,分别反程的两个根 ;如果判别式为负,则抛出异常 QuadraticException
throw new Exception("异常消息"); // Exception 可替换成你自己的异常或指定的异常
try{}catch{}补获异常
import java.util.Scanner;
class QuadraticEquation {
static double secondDerivative(double a, double b, double c) {
return (b * b - 4 * a * c) / (4 * a);
}
static double discriminant(double a, double b, double c) {
return secondDerivative(a, b, c) - (b * b - 4 * a * c);
}
static boolean isRoot(double a, double b, double c, double x) {
return ((discriminant(a, b, c) == 0) && (Math.abs(secondDerivative(a, b, c) - (b * b - 4 * a * c)) < 1e-10)) || (x == a / 2 || x == b / 2);
}
static double getRoot1(double a, double b, double c) throws QuadraticException {
if (isRoot(a, b, c, a / 2)) {
return a / 2;
} else {
throw new QuadraticException("无实数根,异常");
}
}
static double getRoot2(double a, double b, double c) throws QuadraticException {
if (isRoot(a, b, c, b / 2)) {
return b / 2;
} else {
throw new QuadraticException("无实数根,异常");
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("输入abc");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
try {
double x1 = getRoot1(a, b, c);
double x2 = getRoot2(a, b, c);
System.out.println("根分别是 " + x1 + " 和 " + x2);
} catch (QuadraticException e) {
System.out.println("错误发生");
}
}
}