计应193张跃 四则运算系统

计划:

做一个可以随机出题的程序,小学题目,做完并且有得分。

开发:

开发

1.需求分析

作为一个小学生的家长(老师),我想让我的孩子(学生),能在家里自主学习算法,并自己认识到错误,希望能有这样的一个程序

2.生成设计文档

3.设计复审

审核一下设计文档

4.代码规范

要有一些注释,注意缩进,及时分行,代码清晰

5.具体设计

用户可以选择1位数的加法或减法,2位数的加法或减法或混合运算

运算题目随机生成

练习完成后,给出得分

6.具体编码

public static void main(String[] args) {

    System.out.println("请选择类型\n 1.1位数加减法    2.2位数加减法    3.混合加减法  【-1.退出练习】");

    Scanner scanner = new Scanner(System.in);

 

    String type = scanner.nextLine();

 

    if (type == null || type.isEmpty())

        System.out.println("未选择练习类型,程序退出");

    else if (type.length() > 1) {

        if (type.equals("-1"))

            System.out.println("程序退出");

        else

            System.out.println("无此选项,程序退出");

    } else {

        try {

            int t = Integer.valueOf(type);

            if (t < -1 || t > 3)

                System.out.println("无此选项,程序退出");

            else {

                int sum = 0; // 定义总题数

                int okSum = 0; // 定义正确题数

                Random random = new Random(); // 随机数对象

                int a = 0, b = 0, okRes, userRes;// 定义运算的变量

                List<String> errs = new ArrayList<String>();

                 

                while (true) {

                    // 运算开始

                    if (t == 1) { // 生成 0 -9

                        a = random.nextInt(10);

                        b = random.nextInt(10);

                    } else if (t == 2) { // 生成 10 -99

                        a = random.nextInt(90) + 10;

                        b = random.nextInt(90) + 10;

                    } else if (t == 3) { // 生成 0 -99

                        a = random.nextInt(100);

                        b = random.nextInt(100);

                    }

 

                    if ((a - b) >= 0) { // 小学生可能没学过负数,排除下

                        int flag = random.nextInt(2);

 

                        String errInfo = "";

                        String info = "请输入 " + a;

                         

                        if (flag == 0) {

                            okRes = a + b;

                            info += " + " + b + "的答案 【-1.退出练习】:";

                            errInfo = a + " + " + b + "的答案: ";

                        } else {

                            okRes = a - b;

                            info += " - " + b + "的答案 【-1.退出练习】:";

                            errInfo = a + " - " + b + "的答案: ";

                        }

 

                        System.out.print(info);

                        String userResStr = scanner.nextLine();

 

                        if (userResStr == null || userResStr.isEmpty()) {

                            sum++;

                            errs.add(errInfo + "是 " + okRes + " 你的答案是: " + userResStr);

                        }

 

                        userRes = Integer.valueOf(userResStr);

 

                        if (userRes == -1) {

                            System.out.println();

                             

                            if (sum == okSum)

                                System.out.println("******一共 " + sum + " 道题目你全作对了.");

                            else {

                                System.out.println("******一共 " + sum + " 道题目, 对了 " + okSum + "道,错题集:");

                                for(int i = 0;i < errs.size();i++) {

                                    System.out.println("第 " + (i  + 1) + " 道错题 [" + errs.get(i) + "]");

                                }

                            }

 

                            break;

                        } else {

                            sum++;

 

                            if (userRes != okRes) {

                                errs.add(errInfo + "是 " + okRes + " 你的答案是: " + userResStr);

                            } else {

                                okSum++;

                            }

                        }

                    }

                }

            }

        } catch (Exception e) {

            System.out.println("无此选项,程序退出");

        }

    }

}

上一篇:出30道四则运算题目


下一篇:2021-05-30接口练习题