加减法Java(实训)

发布时间:2023年12月18日

加减法Java实训


题目要求:

小学数学辅助教学软件4编写一个小学数学辅助教学软件,主要是测试小学低年级学生的两位数的加减法的计算能力。
要求:(1)用户可以选择练习或测试方式,可以选择 1位数的加法或减法,两位数的加法或减法,或者混合计算。
(2)运算题目随机生成。
(3)练习或测验完成后,给出得分。


完整代码

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

public class MathAssistant {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象,用于接收用户输入
        System.out.println("欢迎使用小学数学辅助教学软件");
        System.out.println("---------------------------");
        System.out.println("请选择模式:");
        System.out.println("1.练习");
        System.out.println("2.测试");
        int mode = scanner.nextInt(); // 输入模式,1表示练习,2表示测试
        System.out.println("---------------------------");
        System.out.println("请选择运算类型:");
        System.out.println("1.加法");
        System.out.println("2.减法");
        System.out.println("3.混合");
        int operatorType = scanner.nextInt(); // 输入运算类型,1表示加法,2表示减法,3表示混合运算
        System.out.println("---------------------------");
        System.out.println("请选择数字位数:");
        System.out.println("1.一位数");
        System.out.println("2.两位数");
        int digits = scanner.nextInt(); // 输入数字位数,1表示一位数,2表示两位数
        System.out.println("---------------------------");
        System.out.println("请输入题目数量:");
        int totalProblems = scanner.nextInt(); // 输入题目数量,表示要做几道题目

        int score = 0; // 计分器,初始化为0分
        Random random = new Random(); // 创建Random对象,用于生成随机数

        // 循环生成题目,做题,判断正误并计分
        for (int i = 0; i < totalProblems; i++) {
            int number1 = generateRandomNumber(digits); // 生成随机的第一个数字
            int number2 = generateRandomNumber(digits); // 生成随机的第二个数字
            char operator = convertOperator(operatorType, random.nextInt(2)); // 根据运算类型和随机数生成运算符
            int answer = calculateAnswer(operator, number1, number2); // 根据运算符、第一个数字、第二个数字计算答案
            String problem = generateMathProblem(number1, number2, operator); // 根据数字和运算符生成题目

            System.out.print(problem); // 输出题目
            int userAnswer = scanner.nextInt(); // 接收用户输入的答案
            if (userAnswer == answer) { // 判断用户答案是否正确
                score++; // 如果答案正确,计分器加1
                System.out.println("回答正确!");
            } else {
                System.out.println("回答错误...");
            }
        }

        System.out.println("您的得分:" + score + "/" + totalProblems); // 输出最终得分
    }

    public static int generateRandomNumber(int digits) { // 生成随机数字的方法
        Random random = new Random(); // 创建Random对象,用于生成随机数
        int max = (int) Math.pow(10, digits) - 1; // 计算最大值  用于确定生成随机数范围
        int min = (int) Math.pow(10, digits - 1); // 计算最小值
        return random.nextInt((max - min) + 1) + min; // 返回生成的随机数
    }

    public static char convertOperator(int operatorType, int operatorIndex) { // 生成随机运算符的方法
        if (operatorType == 1) { // 如果是加法
            return '+'; // 返回加号
        } else if (operatorType == 2) { // 如果是减法
            return '-'; // 返回减号
        } else { // 如果是混合运算
            if (operatorIndex == 0) { // 如果随机数为0
                return '+'; // 返回加号
            } else { // 如果随机数为1
                return '-'; // 返回减号
            }
        }
    }

    public static String generateMathProblem(int number1, int number2, char operator) { // 生成数学问题的方法
        return number1 + " " + operator + " " + number2 + " = "; // 拼接生成数学问题,如“1 + 2 = ”
    }

    public static int calculateAnswer(char operator, int number1, int number2) { // 计算答案的方法
        int answer = 0; // 初始化答案为0
        if (operator == '+') { // 如果是加法
            answer = number1 + number2; // 执行加法运算
        } else { // 如果是减法
            answer = number1 - number2; // 执行减法运算
        }
        return answer; // 返回答案
    }
}

解析

  • 在程序中,创建了4个方法:

    1. generateRandomNumber方法用于生成随机数字;参数digits表示数字的位数。
    2. convertOperator方法用于确定运算符;参数operatorType表示运算类型,如果是加法,则返回加号“+”,如果是减法,则返回减号“-”,如果是混合运算,则随机返回“+”或“-”;参数operatorIndex表示随机序号索引。
    3. generateMathProblem方法用于生成随机的数学问题;参数number1表示第一个数字,number2表示第二个数字,operator表示运算符。
    4. calculateAnswer方法用于计算答案;参数operator表示运算符,number1表示第一个数字,number2表示第二个数字。

    main方法中,我们首先获取用户的输入,并根据用户的输入生成随机的数学问题。然后,我们让用户回答每个问题,并记录他们正确的答案。最后,我们输出他们的得分并结束程序。

注意事项:

  • 你这里的mode也就是用户选择的模式好像没有用,怎么肥四?

    回答: 我感觉测试和练习好像没什么区别都是生成两个数 然后运行考试逻辑 所以这里的mode只是一个形式

  • int max = (int) Math.pow(10, digits) - 1; 这是什么意思?

回答:这行代码是计算生成随机数字的最大值的意思。它使用Math.pow()方法来计算10的digits次方,然后将结果转换为int类型,并减去1,得到最大值。例如,如果输入的digits为2,则最大值为99。这个最大值将用于生成随机数字的范围,确保生成的随机数字不超过指定位数的范围。

关于分工

  • 一号:(易)

    main函数编写 负责打印选项 以及用户选择结果的保存

    generateRandomNumber函数的编写 用于生成随机数

  • 二号:(难一丢丢)

    convertOperator generateMathProblem 函数编写 以及负责代码的整合 打通逻辑

文章来源:https://blog.csdn.net/weixin_47121832/article/details/135061023
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。