首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Scanner 控制台輸入求解一元二次方程:格式化輸出與判別式檢查

     編輯:程式設計綜合問答

原代碼問題

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); // 保留兩位小數
    }
}

關鍵改進

  1. 修正格式化字符串:%f 替代 %lf。
  2. 增加判別式(b²-4ac)非負檢查。
  3. 增加 a != 0 檢查防止除零異常。
  4. 輸入提示明確分隔符,避免用戶輸入換行導致阻塞。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved