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

Java 控制台版四則運算出題程式:隨機生成、輸入判斷、正確率統計

     編輯:Java 綜合教學

Java 控制台版四則運算出題程式

簡單的數學練習程式,展示 Random、Scanner、流程控制、方法封裝等基礎語法。

核心功能

  • 隨機生成 10 道題目(1-10 範圍整數)
  • 支援 +、-、×、÷ 四種運算
  • 用戶輸入答案即時判斷對錯
  • 除法支援浮點數比較(精度到小數點後 7 位)
  • 統計正確數、錯誤數、正確率

關鍵程式碼片段

import java.util.Random;
import java.util.Scanner;

public class MathTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        double right = 0, wrong = 0;
        char[] ops = {'+', '-', '*', '/'};

        for (int i = 1; i <= 10; i++) {
            int x = random.nextInt(10) + 1;
            int y = random.nextInt(10) + 1;
            char op = ops[random.nextInt(4)];

            System.out.printf("第 %d 題:%d %c %d = ", i, x, op, y);

            boolean correct = false;
            switch (op) {
                case '+': correct = checkAnswer(scanner, x + y); break;
                case '-': correct = checkAnswer(scanner, x - y); break;
                case '*': correct = checkAnswer(scanner, x * y); break;
                case '/': correct = checkDivide(scanner, (float)x / y); break;
            }

            if (correct) { right++; System.out.println("Bingo!"); }
            else { wrong++; System.out.println("Oh no~"); }
            System.out.println("正確答案:" + getAnswer(x, y, op));
            System.out.println("-------------------------------");
        }

        System.out.printf("共做對 %.0f 題,做錯 %.0f 題%n", right, wrong);
        if (wrong > 0) {
            System.out.printf("正確率:%.2f%%%n", right / (right + wrong) * 100);
        }
    }

    static boolean checkAnswer(Scanner sc, int expected) {
        return sc.nextInt() == expected;
    }

    static boolean checkDivide(Scanner sc, float expected) {
        return Math.abs(sc.nextFloat() - expected) < 0.0000001f;
    }

    static String getAnswer(int x, int y, char op) {
        switch (op) {
            case '+': return String.valueOf(x + y);
            case '-': return String.valueOf(x - y);
            case '*': return String.valueOf(x * y);
            case '/': return String.format("%.7f", (float)x / y);
            default: return "";
        }
    }
}

除法精度問題解決

問題:int / int 為整數除法,截斷小數部分。
解決:強制轉型 (float)x / (float)y,比較時允許微小誤差(Math.abs(a-b) < 1e-7)。

執行結果範例

第 1 題:3 + 5 = 8
Bingo!
正確答案:8
-------------------------------
第 2 題:7 ÷ 2 = 3.5
Bingo!
正確答案:3.5000000
-------------------------------
...
共做對 8 題,做錯 2 題
正確率:80.00%
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved