Java生成四则运算算数题

Java练习题目

要求简单,生成50道四则运算题目,包含±*÷,注意除数不能为0

import java.util.Random;

/**
 * 
 * @author bufei
 * @datatime 2020年6月25日09:02:54
 * @desc 自动生成50道 50 以内的 四则运算算数题,同时生成答案
 * 
 */
public class Calculate {
    /**
      * 思路
      * 1 定义3个int数组 ,int []num1,[]num2,[]num3,分别存 第一运算数 ,第二个运算数,结果,
      *   定义一个字符数组,char [] ch ;存50道题目的运算符,
      * 2 随机生成一个长度50的运算符数组
      * 3 根据运算符 ,随机组合运算数,并存入三个数组
      * 4 输出的时候可以组合题目,答案存数组 int []result;单独输出
      */
    public static void main(String[] args) {

        // 运算符 
        char[] ch = new char[50];
        //num first secend  result Answer
        int[] numF = new int[50];
        int[] numS = new int[50];
        int[] numR = new int[50];
        int[] numA = new int[50];
        Random random = new Random(1);
        Random rnd2 = new Random(2);
        Random rnd3 = new Random(3);

        for (int i = 0; i < 50; i++) {
            //用num生成运算类型
            int num = random.nextInt(4);
            //numF numS 分别为第一、二个运算数
            numF[i] = rnd2.nextInt(51);
            //在生成题目时 考虑除数不为0
            numS[i] = rnd3.nextInt(51);
            switch (num) {
                case 0:
                    ch[i] = '+';
                    break;
                case 1:
                    ch[i] = '-';
                    break;
                case 2:
                    ch[i] = '*';
                    break;
                case 3:
                    ch[i] = '÷';
                    break;

                default:
                    break;
            }

        }
        // 组合+— *

        for (int i = 0; i < 50; i++) {
            switch (ch[i]) {
                case '+':
                    numR[i] = numF[i] + numS[i];
                    break;
                case '÷':
                    while (numS[i] == 0) {
                        numS[i] = new Random().nextInt(51);
                    }
                    numR[i] = numF[i] / numS[i];
                    break;
                case '*':
                    numR[i] = numF[i] * numS[i];
                    break;
                case '-':
                    numR[i] = numF[i] - numS[i];
                    break;

                default:
                    break;
            }
        }
        //题目数组
        String[] question = new String[50];
        for (int i = 0; i < numR.length; i++) {
            //随机抽取一个运算数用空格替代,存入答案numA数组中
            int flag = random.nextInt(3);

            switch (flag) {
                case 0:
                    question[i] = "___ " + ch[i] + numS[i] + "\t= " + numR[i];
                    numA[i] = numF[i];
                    break;
                case 1:
                    question[i] = numF[i] + " " + ch[i] + " ___" + "= " + numR[i];
                    numA[i] = numS[i];
                    break;
                case 2:
                    question[i] = numF[i] + " " + ch[i] + numS[i] + "\t= " + "___";
                    numA[i] = numR[i];
                    break;

                default:
                    break;
            }
        }
        for (int i = 0; i < 50; i++) {
            System.out.print(question[i]);
            System.out.println("\tAnswer = " + numA[i]);
        }
    }
}

Java生成四则运算算数题_第1张图片
不足很多,仅为练习题目,什么时候想完善再改

  • 很多除法题不能整除,出现答案为0 ,或者仅为整数的情况。
  • 乘除有第一个数为0,后续答案为0,或答案不唯一的情况
  • 也许还有其他更高效巧妙的实现方法,欢迎指正。

你可能感兴趣的:(Java)