这是一个使用 Java 语言编写的命令行程序,用于自动生成小学四则混合运算题目:

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

public class MathProblemGenerator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请选择操作模式:");
        System.out.println("1. 自动生成四则运算题目");
        System.out.println("2. 按年级自动生成四则运算题目");
        int mode = scanner.nextInt();

        if (mode == 1) {
            int numProblems = getNumProblems(scanner);
            generateMathProblems(numProblems, true, true);
        } else if (mode == 2) {
            String grade = getGrade(scanner);
            int numProblems = getNumProblems(scanner);
            generateMathProblemsByGrade(grade, numProblems, true);
        } else {
            System.out.println("无效的选择");
        }
    }

    public static int getNumProblems(Scanner scanner) {
        System.out.print("请输入要生成的题目数量:");
        return scanner.nextInt();
    }

    public static String getGrade(Scanner scanner) {
        System.out.print("请输入年级(一至六):");
        return scanner.next();
    }

    public static void generateMathProblems(int numProblems, boolean allowParentheses, boolean allowDivision) {
        Random random = new Random();
        int count = 0;
        while (count < numProblems) {
            int num1 = random.nextInt(100) + 1;
            int num2 = random.nextInt(100) + 1;
            char operator1 = randomOperator();
            char operator2 = randomOperator();
            int answer = evaluateProblem(num1, num2, operator1, operator2, allowDivision);
            if (answer < 0) {
                continue;
            }
            String problem = formatProblem(num1, num2, operator1, operator2, allowParentheses);
            System.out.println("问题 " + (count + 1) + ": " + problem + " = ");
            System.out.println("答案   : " + answer + "\n");
            count++;
        }
    }

    public static void generateMathProblemsByGrade(String grade, int numProblems, boolean allowParentheses) {
        Random random = new Random();
        int count = 0;
        while (count < numProblems) {
            int num1 = random.nextInt(100) + 1;
            int num2 = random.nextInt(100) + 1;
            char operator1 = randomOperator();
            char operator2 = randomOperator();
            int answer = evaluateProblem(num1, num2, operator1, operator2, true);
            boolean valid = false;

            switch (grade) {
                case "一":
                    if (answer <= 100) {
                        valid = true;
                    }
                    break;
                case "二":
                    if (answer >= 0 && answer <= 100) {
                        valid = true;
                    }
                    break;
                case "三":
                    if (answer >= 0 && answer <= 100 && (operator1 == '*' || operator1 == '/')) {
                        valid = true;
                    }
                    break;
                default:
                    System.out.println("无效的年级");
                    return;
            }

            if (!valid) {
                continue;
            }

            String problem = formatProblem(num1, num2, operator1, operator2, allowParentheses);
            System.out.println("问题 " + (count + 1) + ": " + problem + " = ");
            System.out.println("答案   : " + answer + "\n");
            count++;
        }
    }

    public static char randomOperator() {
        Random random = new Random();
        char[] operators = {'+', '-', '*', '/'};
        return operators[random.nextInt(operators.length)];
    }

    public static int evaluateProblem(int num1, int num2, char operator1, char operator2, boolean allowDivision) {
        int answer = 0;
        switch (operator1) {
            case '+':
                answer = num1 + num2;
                break;
            case '-':
                answer = num1 - num2;
                break;
            case '*':
                answer = num1 * num2;
                break;
            case '/':
                if (num1 % num2 == 0 && allowDivision) {
                    answer = num1 / num2;
                } else {
                    answer = -1;
                }
                break;
        }

        switch (operator2) {
            case '+':
                answer += num2;
                break;
            case '-':
                answer -= num2;
                break;
            case '*':
                answer *= num2;
                break;
            case '/':
                if (num2 != 0 && answer % num2 == 0 && allowDivision) {
                    answer /= num2;
                } else {
                    answer = -1;
                }
                break;
        }
        return answer;
    }

    public static String formatProblem(int num1, int num2, char operator1, char operator2, boolean allowParentheses) {
        if (allowParentheses && operator1 != operator2) {
            boolean useParentheses = random.nextBoolean();
            if (useParentheses) {
                return num1 + " " + operator1 + " (" + num2 + " " + operator2 + " " + num2 + ")";
            }
        }
        return num1 + " " + operator1 + " " + num2 + " " + operator2 + " " + num2;
    }
}

这个程序可以接受不同的输入选项:

  1. 如果选择模式1,程序会要求输入要生成的题目数量,并自动生成相应数量的四则运算题目和答案。运算式子会包含两个不同的运算符,并且答案不会是负数。
  2. 如果选择模式2,程序会要求输入年级和要生成的题目数量,并按照对应年级的要求生成相应数量的四则运算题目和答案。

希望这个基于 Java 的命令行程序满足您的要求!

小学四则混合运算题目自动生成器 - Java 命令行程序

原文地址: https://www.cveoy.top/t/topic/bCeU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录