java生成四则运算

Posted meethigher

tags:

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

要求:使用C或Java语言完成一个自动生成四则运算试题的程序

软件基本功能如下。

  1. 自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
  2. 剔除重复算式。2+3 和 2+3 是重复算式,2+3 和 3+2 不属于重复算式
  3. 题目数量可定制
  4. 相关参数可控制
    1. 是否包含乘法和除法
    2. 操作数数值范围可控
    3. 操作数是否含负数
  5. 生成的运算题存储到外部文件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生成四则运算的主要内容,如果未能解决你的问题,请参考以下文章

小学四则运算生成Java实现 (彭迪彬 李尤)

java四则运算生成器

使用java实现四则运算的生成 (罗彬 梁汉烽)

四则运算生成器(java) 蔡苑菲,陆海燕

结对项目--四则运算生成器(Java) 刘彦享+龙俊健

结对编程-四则运算生成器(java实现)