java生成四则运算
Posted meethigher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java生成四则运算相关的知识,希望对你有一定的参考价值。
要求:使用C或Java语言完成一个自动生成四则运算试题的程序
软件基本功能如下。
- 自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
- 剔除重复算式。2+3 和 2+3 是重复算式,2+3 和 3+2 不属于重复算式
- 题目数量可定制
- 相关参数可控制
- 是否包含乘法和除法
- 操作数数值范围可控
- 操作数是否含负数
- 生成的运算题存储到外部文件result.txt中
1. 需求分析
? 某小学里,老师让家长每天出30道加减法题目给孩子做。于是,想写一个小程序完成这件事。
2.功能设计
- 基本功能
- 题目数量可控
- 乘除可控
- 操作数范围可控
- 操作数正负可控
- 输出内容
- 扩展功能
- 输出答案可控
3. 设计实现
- java语言
- 导入java.util包、java.io包、java.lang包下的Math类
- 定义变量
- 循环num(题目数量)次,随机产生3个数,2个随机数用来计算,1个随机数通过switch-case决定sign(运算符号)。
- 将所要求的内容通过FileWrite类下的write方法写到result.txt文件中
- 随机负数的产生是通过随机数+1-随机数,是否有乘除是通过设置随机数范围来决定的。
- 遇到除法中,除数不能为0的问题,如果为0,重新生成随机数
4. 测试运行
负数的产生
int a, b;
if (negNum == 1)
a = (1 + (int) (Math.random() * maxNum)) - ((int) (Math.random() * maxNum));
b = (1 + (int) (Math.random() * maxNum)) - ((int) (Math.random() * maxNum));
b = b == 0 ? (1 + (int) (Math.random() * maxNum)) : b;//若除数为0,重新生成随机数
else
a = (1 + (int) (Math.random() * maxNum));
b = (1 + (int) (Math.random() * maxNum));
运算符的判断
int j = 1 + (int) (Math.random() * (level == 1 ? 4 : 2));
switch (j)
case 1:sign = " + ";res = a + b;break;
case 2:sign = " - ";res = (a) - (b);break;
case 3:sign = " * ";res = a * b;break;
case 4:sign = " / ";res = a / b;break;
运行结果
扩展功能
5. 总结
感觉写的程序比较复杂,所有的功能在一个循环里完成了。感觉好多地方还可以封装一下,这样代码也会比较美观。
还有我感觉自己变量用的太多了,有点冗余。
这个是第一版,之后慢慢改进。
还有一个不重复的功能没实现,还没有什么思路。如果最大操作数是1,输出10个的话,那肯定会重复了啊。
太难了。
6. PSP
PSP2.1 | 任务内容 | 计划完成需要时间(min) | 实际完成需要时间(min) |
---|---|---|---|
Planning | 计划 | 5 | 10 |
Estimate | 估计时间,规划步骤 | 5 | 10 |
Development | 开发 | 30 | 145 |
Analysis | 需求分析 | 5 | 20 |
Coding | 具体编码 | 20 | 120 |
Test | 测试 | 5 | 5 |
Reporting | 报告 | 20 | 40 |
Postmortem&Process Improvement Plan | 总结改进 | 20 | 40 |
以上是关于java生成四则运算的主要内容,如果未能解决你的问题,请参考以下文章