前言

首先,结果必须要在0~100之间,因为对于这些算术题目的应用范围来说,不可能是已经学习了负数的人群,结果也在100以内可以适当删除,题目来源于《基于案例的软件构造教程》第二章模块化构造

要求:

程序输出50道100以内的加减法算式的习题(模块化,有一些鸡肋的感觉)
每次运行程序可得到一套50道题的习题和答案(结果也在0~100之间)

三个模块

  1. 打印提示语
  2. 输出题目(思路是写代码很重要的一点,请务必想好怎么去实现代码再来参考)
  3. 输出答案

代码

具体看代码注释,写的很清楚了

package com.rjgz.pro_one;

import java.util.Random;
public class Arithmetic {
    public static void main(String[] args) {
        //打印提示语
        printHeader();
        //generateEquations生成习题并返回习题的答案数组
        int[] answerArr = generateEquations();
        //输出答案
        printAnswer(answerArr);
    }

    private static int[] generateEquations() {
        //left_data为加法左边的数,right_data为右边的,flag是01标识用来判断+-
        //subCount为题目个数 answer为每题答案 signal为加减法符号 answerArr为答案数组
        int left_data, right_data, answer, flag, subCount = 0;
        char signal;
        int[] answerArr=new int[50];
        Random random = new Random();
        while (subCount != 50) {
            flag = random.nextInt(2);//随机生成0或1
            left_data = random.nextInt(101);//随机生成[0~100]之间的数
            right_data = random.nextInt(101);//随机生成[0~100]之间的数
            //判断是0或1生成加法或者减法,1为加法
            if (flag == 1) {
                signal = '+';
            } else {
                signal = '-';
            }
            //100以内的加减法,且结果也不能超过100,不能是负数,因此要加上判断,answer为计算结果
            answer = calculate(left_data, right_data, flag);
            if (answer < 100&&answer > 0) {
                subCount++;
                //将答案存入数组中并打印题目
                answerArr[subCount-1] = answer;
                System.out.println("第" + subCount + "题:\t" + left_data + signal + right_data + "=");
            }
        }
        return answerArr;
    }

    private static void printHeader() {
        System.out.println("---------------------------------------");
        System.out.println("--- 程序输出50道100以内的加减法算式的习题 ");
        System.out.println("--- 每次运行程序可得到一套50道题的习题和答案 ");
        System.out.println("---------------------------------------");
    }

    /**
     * 获取计算结果并返回
     * @param left
     * @param right
     * @param flag
     * @return
     */
    public static int calculate(int left, int right, int flag) {
        if (flag == 1) {
            return left+right;
        }
        return left-right;
    }

    /**
     * 打印出数组中存放的计算结果
     * @param answerArr
     */
    public static void printAnswer(int[] answerArr){
        System.out.println("-------------------------------");
        System.out.println("--- 下面是习题的参考答案");
        System.out.println("-------------------------------");
        //答案数组遍历输出
        for (int i = 0; i < answerArr.length; i++) {
            System.out.println((i+1)+":\t"+answerArr[i]);
        }

    }
}

运行效果

Java生成50道100以内的加减法算式

最后修改:2023 年 05 月 05 日 05 : 39 PM
如果觉得此文章有用,请随意打赏