20165323 结对编程之四则运算week2-整体总结
一、需求
实现一个命令行程序,要求:
1、自动生成小学四则运算题目(加、减、乘、除)
2、支持整数
3、支持多运算符(比如生成包含100个运算符的题目)
4、支持真分数
5、能判断错误,在输入错误结果后提醒出错并输出正确答案
6、统计正确率
二、设计思路
按以下要求逐步实现输出结果。
请输入要生成的题目数:<输入6>
题目1:
3 + 4 = <输入7>
正确!
题目2:
5 ÷ 8 = <输入5/6>
错误,正确答案为:5/8
题目3:
2/3 - 1/5 = <输入7/15>
正确!
题目4:
1/6 * 3/7 = <输入3/42>
正确!
题目5:
10 - 5 * 4 = <输入20>
错误,正确答案为:-20
题目6:
(1/3 + 1/2) * 11/20 = <输入55/120>
错误,正确答案为:11/24
完成6道题目,正确率为50%
三、实现过程中的关键代码
package Arithmetic;
import java.text.NumberFormat;
import java.util.Random;
import java.util.Scanner;
public class ResultTest {
public static void main(String[] args) {
Scanner Scan = new Scanner(System.in
);
Scanner Scan1 = new Scanner(System.in
);
NumberFormat fmt = NumberFormat.getPercentInstance();
Random rnd = new Random();
Questions Iq = new Questions();
Calculator jdg = new Calculator();
NifixToSuffix nts = new NifixToSuffix();
int count;
while(true) {
int j = 0;
System.out.print("请输入要生成的题目数:" );
count = Scan.nextInt();
for (int i = 0; i < count; i++) {
//生成题目
String expr = null;
int a = rnd.nextInt(4);
if (a == 0){
expr = Iq.getAdd();
}
else if (a == 1){
expr = Iq.getSub();
}
else if (a == 2){
expr = Iq.getMulti();
}
else if (a == 3){
expr = Iq.getDiv();
}
System.out.print(expr + " = ");
//输入结果
String result = Scan1.nextLine();
nts.conversion(expr);
if (result.equals(jdg.evaluate(nts.getMessage()))){
System.out.println("正确!");
j++;
}
else
System.out.println("错误,正确答案为:" + jdg.evaluate(nts.getMessage()));
}
double accuracy = j/count;
System.out.println("完成" + count + "道题目,正确率为" + fmt.format(accuracy)); //答题结果及正确率
System.out.println("答对"+ j + "道题");
String s1 = Scan.nextLine();
System.out.print("是否继续生成题目?(y/n):" );
String s2 = Scan.nextLine();
if (s2.equalsIgnoreCase("n")){
break;
}
}
}
}
四、运行过程截图



测试结果



UML图

五、代码托管
代码存放地址

六、遇到的困难及解决方法
遇到的问题:j/count其中j为int型 得改为(double)j/count 不然会成结果会为0.

七、对结对的小伙伴做出评价
在这周的结对编程中,我和我的队友积极查阅了相关资料,共同探索四则运算问题,相互学习,相互促进,虽然在这之前我们两对第15章堆栈内容和第十章输入输出内容不太熟悉,这一次的结对编程训练,使我两都得到了提高,这次我做驾驶员,他做领航员,在不懈的努力下使我们的JAVA小船顺利到达了终点,我相信经过这次训练我们俩的默契度会越来越高,这使我俩都受益匪浅。
八、结对照片

九、PSP
| PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
|---|---|---|---|
| Planning | 计划 | 1 | 1 |
| · Estimate | · 估计这个任务需要多少时间 | 8 | 21 |
| Development | 开发 | 7 | 14 |
| · Analysis · | 需求分析 (包括学习新技术) | 2 | 4 |
| · Design Spec · | 生成设计文档 | 1 | 2 |
| · Design Review | · 设计复审 (和同事审核设计文档) | 1 | 2 |
| · Coding Standard · | 代码规范 (为目前的开发制定合适的规范) | 0.5 | 1 |
| · Design · | 具体设计 | 7 | 14 |
| · Coding · | 具体编码 | 7 | 14 |
| · Code Review · | 代码复审 | 0.5 | 0.5 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 1 | 1 |
| Reporting | 报告 | 1 | 2 |
| · Test Report | · 测试报告 | 1 | 1 |
| · Size Measurement | · 计算工作量 | 0.5 | 0.5 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 1 | 1 |
| . | 合计 | 39.5 | 79 |
20165323 结对编程之四则运算week2-整体总结的更多相关文章
- 结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...
- 20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
20175324王陈峤宇 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...
- 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...
- 20175311胡济栋 2018-2019-2《Java程序设计》结对编程项目-四则运算 第二周 阶段性总结
20175311胡济栋 2018-2019-2<Java程序设计>结对编程项目-四则运算 第二周 阶段性总结 需求分析 这是利用栈来设计一个计算器的第二阶段总结. 自动生成四则运算的题目( ...
- 20165223 结对编程之四则运算week2-整体总结
目录 一.结对对象 二.需求分析 三.设计思路 四.核心代码 五.功能截图 六.结对感受 一.结对对象 担任角色(本周交换角色,流动学习) 驾驶员(Driver):20165218 赵冰雨(是控制键盘 ...
- 20165223 结对编程之四则运算week1-阶段性总结
目录 一.结对对象 二.需求分析 三.设计思路 四.功能截图 五.结对感受 一.结对对象 担任角色 驾驶员(Driver):20165223 蔡霓(是控制键盘输入的人) 领航员(Navigator): ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-中坚阶段
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-中坚阶段 如今的编写,进入了一段时间的中坚阶段,小伙伴的思路虽然很一致,但是总是存在着一定问题,这就造成了我们中坚阶 ...
随机推荐
- 新年第一个目标一张表盘串讲所有canves的知识点
我们的目标 首先是canves的坐标系统,基于浏览器的左上角为原点,x,y轴为正方向的坐标系统. 首先初始化,打标签 <canvas id="canvas" height=& ...
- 修改主机IP地址
IP:由192.168.1.1~192.168.1.254. 先使用电脑以动态IP的方式自动获取ip地址联网,然后通过以下方法查询子网掩码和默认网关地址:
- spring3.1 profile 配置不同的环境
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- <TCP/IP>记一次关于IP地址和MAC物理地址的思考
是的,从3月6日第一次上计算机网络课起,我还是今天第一次对这本书里讲的知识点有了自己的疑问..之前看书就是 嗯嗯这好像很有道理,嗯嗯也许再多看几章就知道它在讲什么了.. 不过今天已经自学到了网络层了, ...
- python beautifulsoup爬虫学习
BeautifulSoup(page_html, "lxml").select(),这里可以通过浏览器开发者模式选择copy selector,并且并不需要完整路径. github ...
- Java文件复制
主要是工作代码,无解释. /** * 将文件或文件夹source复制到dest * <br>目标文件检测: * <br> a.当文件不存在时:需要创建文件 * <br&g ...
- LabVIEW将字符串转化为十进制
(1)作用:将ASCII当做成十六进制来表示,并计算这个十六进制数对应的十进制大小 例如:008A本身对应的ASCII码用十六进制表示为为30 30 38 41,但有些协议中将008A当成0x008A ...
- 海康JAVA SDK库动态路径加载
海康JAVA SDK初始化路径默认是放在classes下面,见下: HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("HCNetSDK&q ...
- HBase的replication原理及部署
一.hbase replication原理 hbase 的复制方式是 master-push 方式,即主集群推的方式,主要是因为每个rs都有自己的WAL. 一个master集群可以复制给多个从集群,复 ...
- 接口签名进行key排序,并MD5加密
import org.apache.commons.codec.digest.DigestUtils; import java.io.UnsupportedEncodingException; imp ...