用Java随机生成四则运算
代码链接:https://github.com/devilwjy/Code.Demo
需求分析:
1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
2.每个练习题至少要包含2种运算符。
3.练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
4.练习题生成好后,将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
当程序接收的参数为4时,以下为输出文件示例:

功能设计:
1.从键盘输入一个数值,并生成相应数量的四则运算练习题。
2.数值的范围为1到100,运算符的范围是+,-,*,/。
3.数值的个数为3个,运算符的个数为2个。
4.运算过程中不得出现负数与非整数。
5.将学号、生成的四则运算练习题并及计算答案输出到名为“Result.txt”的文档中。
设计实现:

测试运行:

核心代码:
以第一个运算符为“/”为例
//第一个运算符为“/”
else{
if(data1%data2==0 && data2!=0)//判断data1能否被data2整除,且除数data2不能为0
{
if(operator[num2]=="+")//乘除的优先级高于加减,所以可以顺着往下计算
{
result=data1/data2+data3;
System.out.println(str+"="+result); }
else if(operator[num2]=="-")
{
if(data1/data2>=data3)//判断data1/data2的商是否大于data3
{
result=data1/data2-data3;
System.out.println(str+"="+result); }
else{
number++;//不符合条件就将表达式的个数加1,进行下一个表达式的计算
}
}
else if(operator[num2]=="*")
{
result=data1/data2*data3;
System.out.println(str+"="+result); }
else{
int result1=data1/data2;
if(result1%data3==0 && data3!=0)//判断data1/data2的商能否整除data3,且data3不能为0
{
result=data1/data2/data3;
System.out.println(str+"="+result); }
else{
number++;
}
}
}
else{
number++;
}
}
总结:
本次实验我的实现过程很简单,而且有很大的局限性,只能生成含有三个数、两个运算符的四则运算练习题。一开始我的想法是将随机生成的四则运算放在一个字符串里,根据逆波兰式运算,将中缀表达式转换成后缀表达式,然后存储在栈中,但是最后没能成功,只好用一种极为简单的方式实现这个实验。说来有些惭愧,有点投机取巧之嫌,不过我的编程能力很差,纵然仔细研究了网上博客中的代码,还是写不出想要实现的方法。虽然很遗憾,但我也只能做到这儿了,不能说问心无愧,只能表明以前用的功太少了,以后回尽力改正,养成良好的习惯。
|
PSP |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
|
Planning |
计划 |
10 |
12 |
|
Estimite |
估计任务所需时间,并规划大致工作步骤 |
10 |
15 |
|
Development |
开发 |
100 |
120 |
|
Analysis |
需求分析 (包括学习新技术) |
8 |
6 |
|
Design Spec |
生成设计文档 |
6 |
5 |
|
Design Review |
设计复审(和同事审核设计文档) |
6 |
5 |
|
Coding Standard |
代码规范(为目前的开发指定合适的规范) |
5 |
5 |
|
Design |
具体设计 |
12 |
14 |
|
Coding |
具体编码 |
40 |
46 |
|
Code Review |
代码复审 |
12 |
15 |
|
Test |
测试(自我测试,修改代码,提交修改) |
15 |
12 |
|
Reporting |
报告 |
12 |
10 |
|
Test Report |
测试报告 |
5 |
5 |
|
Size Measurement |
计算工作量 |
3 |
3 |
|
Postmortem & Process Improvement Plan |
事后总结,并提出过程改进计划 |
5 |
8 |
用Java随机生成四则运算的更多相关文章
- Java随机生成定长纯数字或数字字母混合数
(转)Java随机生成定长纯数字或数字字母混合数 运行效果图: 具体实现代码
- 基于c编写的关于随机生成四则运算的小程序
基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序 github源码和工程文件地址:https://github.com/ ...
- 结对作业——随机生成四则运算(Core 第7组)
结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...
- java 随机生成4位随机数
java 随机生成4位的随机数测试类 @org.junit.Testpublic void testRandom(){ String msg="您的注册码为%s,谢谢注册!"; S ...
- Java随机生成18位身份证号
package com.ihome.data; import java.text.SimpleDateFormat; import java.util.Calendar; import java.ut ...
- java随机生成字符串并排序
package com.Imooc; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...
- Java 随机生成中文姓名,手机号,邮编,住址
package lovo; import java.util.HashMap; import java.util.Map; /** * 随机生成中文姓名,性别,Email,手机号,住址 * @auth ...
- java随机生成字符串(字符随机生成类 生成随机字符组合)
原文:http://www.jb51.net/article/45006.htm package p2p_web; import java.util.ArrayList; import java.ut ...
- java随机生成字符串工具类
package aA; import java.util.ArrayList; import java.util.Arrays; import java.util.Random; /** * 字符随机 ...
随机推荐
- 4.keras实现-->生成式深度学习之用GAN生成图像
生成式对抗网络(GAN,generative adversarial network)由Goodfellow等人于2014年提出,它可以替代VAE来学习图像的潜在空间.它能够迫使生成图像与真实图像在统 ...
- LeetCode Python 位操作 1
Python 位操作: 按位与 &, 按位或 | 体会不到 按位异或 ^ num ^ num = 0 左移 << num << 1 == num * 2**1 右移 & ...
- ubuntu shell脚本出错 dash
今天在Ubuntu下调试代码,明明是正确的,却仍然报错,查了错误信息才知道:Ubuntu中默认不是bash,而是为了加快开机速度,使用了dash. dash中需要严格的语法,而且与bash语法不同.例 ...
- 转载 vsftpd安装
http://blog.csdn.net/shutfuckingup/article/details/8250290 1:安装vsftpd yum install vsftpd 2:关闭防火墙 ...
- Django初级手册6-静态文件
用Django加载外部文件 在Django中iamges,JS或者CSS通称为static文件 定制APP的外观 一般放在应用目录下的static/polls/目录下,下为polls/static/p ...
- JQ 给textarea赋值
<textarea id='t1'></textarea> 下面是 jq赋值的三种方式 $("#t1").text("AAA"); $( ...
- mvc actionresult返回各种文件
public ActionResult ReviewFile(string folderName, string fileBasename, string extendName) { //以后根据后缀 ...
- 制作系统U盘,不用做任何动作直接从U盘启动装系统(非PE的)
用U盘装系统可以用PE方式,进入PE系统,选择镜像文件,然后装,这种比较麻烦. 下面介绍一下从U盘启动,直接装系统的方法,这种方法从U盘启动后,不用做任何动作,就像用光盘装系统一样简单 首先要制作一下 ...
- Linux基础命令---gunzip
gunzip 解压缩被gzip压缩过的文件.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 gunzip [-ac ...
- (三)github之GIT的导入
什么是版本管理? git是一款[分散型版本管理]软件,提供了开发过程中不可少的功能,例如记录一款软件添加或者更改源代码的过程,回溯到特定阶段,恢复误删除的文件等. 集中型:将仓库集中放在服务器中,一旦 ...