
请问下这个用switch条件语句该怎么做呀?有没有人可以帮忙回答一下
关注
import java.util.Scanner;
public class QuadraticEquationSolver {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 提示用户输入系数a, b, c
System.out.println("请输入系数a, b, c:");
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
// 使用 switch 语句处理不同的情况
switch (Double.compare(a, 0)) {
case 0: // 如果 a == 0,处理为一元一次方程
if (b != 0) {
// 计算一次方程的解
double x = -c / b;
System.out.println("一元一次方程的解为: x = " + x);
} else {
// 如果 b 也为 0,表达式无意义
System.out.println("表达式无意义。");
}
break;
default: // 处理二次方程情况
// 计算判别式 Δ = b^2 - 4ac
double discriminant = b * b - 4 * a * c;
// 根据判别式 Δ 的值,处理不同的情况
switch (Double.compare(discriminant, 0)) {
case 0: // 如果 Δ == 0,只有一个实数解
double x = -b / (2 * a);
System.out.println("一个实数解: x = " + x);
break;
case 1: // 如果 Δ > 0,存在两个不等实数根
double x1 = (-b + Math.sqrt(discriminant)) / (2 * a);
double x2 = (-b - Math.sqrt(discriminant)) / (2 * a);
System.out.println("两个不等实数根: x1 = " + x1 + ", x2 = " + x2);
break;
case -1: // 如果 Δ < 0,存在两个共轭复数根
double realPart = -b / (2 * a);
double imaginaryPart = Math.sqrt(Math.abs(discriminant)) / (2 * a);
System.out.println("两个共轭复数根: ");
System.out.println("x1 = " + realPart + " + " + imaginaryPart + "i");
System.out.println("x2 = " + realPart + " - " + imaginaryPart + "i");
break;
}
break;
}
sc.close(); // 关闭扫描器
}
}