java 自动生成四则运算式

Posted crazyideas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 自动生成四则运算式相关的知识,希望对你有一定的参考价值。

本篇文章将要介绍一个“自动生成四则运算式”的java程序,在没有阅读《构建之法》之前,我已经通过一个类的形式实现了要求的功能,但是当阅读完成《构建之法》之后,我意识到自己所写程序的缺点,扩展性差。我通过组合模式对程序进行了修改,解耦合。
可以关注公众号 HarLearn ,回复“ 自动生成四则运算式 ”,获取单类实现的源代码

1. 需求分析

自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内,把运算式存入“result.txt”文件中。题目数量、数字范围、操作数和运算规则是可控的。

2. 功能分析

2.1 基础功能

    题目数量可设置

    可定制操作数

    可设置数字的范围

    可选择是否含有乘除

2.2 扩展功能

    可设置计算机结果的范围

    可以扩展其他运算符

    可以生成带括号的运算式

3. 设计实现

3.1 类图

技术图片
类图设计

3.2 关键方法

生成运算式函数

private String generateArithmetic(Arithmetic arithmetic
        boolean isBracket = true;
        String arithmatic = RandomNumber.getRandomNumber(arithmetic.getNumberRange(),arithmetic.isNagetive());
        for(int i = 1; i < arithmetic.getNumberOpera(); i++)
            ArithmeticComponent operator = operators.get(Integer.parseInt(RandomNumber.getRandomNumber(operators.size(),false))-1);
            if (operator.isBracket()&&isBracket)
                arithmatic = operator.generateArithmetic(arithmatic);
                isBracket = false;
                i--;
            else if (!operator.isBracket())
                arithmatic = operator.generateArithmetic(arithmatic) + RandomNumber.getRandomNumber(arithmetic.getNumberRange(),arithmetic.isNagetive());
                isBracket = true;
            
        
        return arithmatic;
    

生成随机数方法

public static String getRandomNumber(int numberRange, boolean isNagetive)
        Random randomNum = new Random();
        String randomNumber = "";
        if (isNagetive)
            int number = (randomNum.nextInt(numberRange) +1) * (Math.random() > 0.5 ? -1 : 1);
            if (number < 0)
                randomNumber = "(" + number + ")";
            else
                randomNumber = number+"";
            
            return randomNumber;
        else
            return randomNum.nextInt(numberRange) +1 +"";
        
    

运行测试

基础功能测试

技术图片
基础功能测试

扩展测试

技术图片
生成带括号的测试

总结

通过本篇文章学习了很多,发现了自己在软件开发中的一些不足,考虑问题的欠缺。希望通过课程的系统的学习,使自己的能力提高。

PSP

技术图片
PSP

以上是关于java 自动生成四则运算式的主要内容,如果未能解决你的问题,请参考以下文章

软件工程个人作业01

Java语言语法

C++ 隐式生成的赋值运算符的异常安全性

匿名函数生成式三元运算

java中的运算符与类型转换

20165310java_teamExp1_week1