System.out.printf("x1=%lf,x2=%lf", x1, x2); // %lf 在 Java 中非法
Java printf 格式符為 %f(浮點數),%lf 僅用於 C 語言 scanf。
import java.util.Scanner;
public class QuadraticEquation {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double a, b, c, x1, x2;
System.out.print("請輸入 a, b, c (空格分隔): ");
a = input.nextDouble();
b = input.nextDouble();
c = input.nextDouble();
double discriminant = b * b - 4 * a * c;
if (discriminant < 0) {
System.out.println("判別式 < 0,無實數根");
return;
}
if (a == 0) {
System.out.println("a 不能為 0,非一元二次方程");
return;
}
x1 = (-b + Math.sqrt(discriminant)) / (2 * a);
x2 = (-b - Math.sqrt(discriminant)) / (2 * a);
System.out.printf("x1=%.2f, x2=%.2f%n", x1, x2); // 保留兩位小數
}
}
%f 替代 %lf。b²-4ac)非負檢查。a != 0 檢查防止除零異常。