以下是Java代码实现:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double[] eqn = new double[3];
for (int i = 0; i < 3; i++) {
if (scanner.hasNextDouble()) {
eqn[ i] = scanner.nextDouble();
} else {
System.out.println("Wrong Format");
return;
}
}
double[] roots = new double[2];
int numOfRoots = solveQuadratic(eqn, roots);
if (numOfRoots == 0) {
System.out.println("The equation has no roots");
} else if (numOfRoots == 1) {
System.out.printf("The equation has one root: %.4f", roots[0]);
} else {
System.out.printf("The equation has two roots: %.4f and %.4f", roots[0], roots[1]);
}
}
public static int solveQuadratic(double[] eqn, double[] roots) {
double a = eqn[0];
double b = eqn[1];
double c = eqn[2];
double delta = b * b - 4 * a * c;
if (delta < 0) {
return 0;
} else if (delta == 0) {
roots[0] = -b / (2 * a);
return 1;
} else {
roots[0] = (-b + Math.sqrt(delta)) / (2 * a);
roots[1] = (-b - Math.sqrt(delta)) / (2 * a);
return 2;
}
}
首先,我们从键盘输入三个实数系数a、b、c,如果输入格式有误,输出“Wrong Format”并结束程序。
然后,我们调用solveQuadratic方法,计算一元二次方程的根。如果无实数根,输出“The equation has no roots”;如果只有一个根,输出“The equation has one root: 值”;如果有两个根,输出“The equation has two roots: 值1 and 值2”。
solveQuadratic方法接受一个含有三个实数系数的数组eqn和一个长度为2的数组roots,计算一元二次方程的根,并将两个实数根存储进roots中。该方法返回实数根的个数。
根据一元二次方程的求根公式,我们可以计算出delta的值,如果delta小于0,说明无实数根,返回0;如果delta等于0,说明有一个实数根,返回1;如果delta大于0,说明有两个实数根,返回2。