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

原文地址:https://www.cnblogs.com/CrazyIdeas/p/11492908.html

时间: 2024-10-11 22:11:26

java 自动生成四则运算式的相关文章

java自动生成验证码

代码结构: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

java自动生成代码

看到这个标题,如果你以为真的可以完全自动生成,那你就太Naive啦 我这里想介绍的是,利用模板生成我们需要的代码 一.模板 首先来说说模板,常见的java模板有:FreeMarker.Velocity.Jamon.JByte等等. 不熟悉的可以百度下,其实我了解也不多,哈哈. 二.原理 其实就是利用模板,填充数据,得到我们需要的代码.即:输出=模板+数据 三.实例 实例利用FreeMarker来做的,所以你需要先导入freemarker的jar包 假设我们需要自动生成一个java bean,那么

Mybatis上路_06-使用Java自动生成

目录[-] 1.编写Generator执行配置文件: 2.在MyEclipse中建空web项目: 3.编写并执行Java程序: 4.查看并修改生成的文件: 5.测试,使用生成的文件查询: 1)导入MyBatis的jar包: 2)创建MyBatis的xml配置文件: 3)Java测试代码: 1.编写Generator执行配置文件: generatorConfigation.xml.注意配置数据库驱动包的绝对路径. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

java自动生成entity文件

网上关于自动生成entity文件的代码很多,看了很多代码后,在先辈们的基础上再完善一些功能(指定多个表,全部表). 为了使用方便所以把两个类写在一个java文件中,所以大家可以直接拿这个java文件,修改下配置后就可以使用了,传送门 1.把字段抽象为一个类 /** * 字段信息表 */ class FieldMeta { private String fieldName; //字段名 private String fieldDataType; //字段类型 private int fieldLe

个人项目1修改版——自动生成四则表达式

这是在上一个程序上的改版,这次要求支持真分数的四则运算,这就要求判断一个数是否为真分数,具体代码如下: 1 //这是张晓菲的第一个作业的完善,目的是自动生成30个四则运算,要求支持真分数的四则运算 2 //2016/3/3 3 4 #include <iostream> 5 #include <cmath> 6 using namespace std; 7 8 //main函数 9 void main() 10 { 11 int ran1,ran2,ran3,ran4,oper;

自动生成四则运算器

这个项目是采用c语言实现的一个能根据用户要求数目自动生成相应的简单四则运算. 代码如下: #include <stdio.h>#include <stdlib.h>#include <time.h>#include <math.h> int main() { int i=0; int a=0; int b=0; int type; char flag; int left, right; float result; printf("请输入要出的题目数

java自动生成实体类(带注释)和controller层,service层 dao层 xml层,亲测可行

参考:https://blog.csdn.net/qq_37557563/article/details/90041523package test; import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.DataSourceConfig;imp

java 自动生成Bean的工具

import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSetMetaData;import java.sql.SQLException; /** * 数据库表转换成javaBean对象小工具(已用了很长时间), * 1 bean

Spring集成Swagger,Java自动生成Api文档

Swagger官网:http://swagger.io GitHub地址:https://github.com/swagger-api 官方注解文档:http://docs.swagger.io/swagger-core/apidocs/index.html Swagger-UI地址:https://github.com/swagger-api/swagger-ui swagger最终效果图 好,开始说Spring怎么配置Swagger了 1.pom.xml引入需要的jar包 <!-- 构建Re