一、需求

实现一个命令行程序,要求:

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-整体总结的更多相关文章

  1. 结对编程项目——四则运算vs版

    结对编程项目--四则运算vs版 1)小伙伴信息:        学号:130201238 赵莹        博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...

  2. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...

  3. 20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175324王陈峤宇 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...

  4. 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...

  5. 20175311胡济栋 2018-2019-2《Java程序设计》结对编程项目-四则运算 第二周 阶段性总结

    20175311胡济栋 2018-2019-2<Java程序设计>结对编程项目-四则运算 第二周 阶段性总结 需求分析 这是利用栈来设计一个计算器的第二阶段总结. 自动生成四则运算的题目( ...

  6. 20165223 结对编程之四则运算week2-整体总结

    目录 一.结对对象 二.需求分析 三.设计思路 四.核心代码 五.功能截图 六.结对感受 一.结对对象 担任角色(本周交换角色,流动学习) 驾驶员(Driver):20165218 赵冰雨(是控制键盘 ...

  7. 20165223 结对编程之四则运算week1-阶段性总结

    目录 一.结对对象 二.需求分析 三.设计思路 四.功能截图 五.结对感受 一.结对对象 担任角色 驾驶员(Driver):20165223 蔡霓(是控制键盘输入的人) 领航员(Navigator): ...

  8. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...

  9. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-中坚阶段

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-中坚阶段 如今的编写,进入了一段时间的中坚阶段,小伙伴的思路虽然很一致,但是总是存在着一定问题,这就造成了我们中坚阶 ...

随机推荐

  1. Spring @Bean注解 (基于java的容器注解)

    基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...

  2. Spring Bean定义配置

    1-定义bean 1.1 如果显示的指定了名称,IOC容器就是用这个名称 1.2 若没有显示指定名称,spring自带的BeanNameGenerator会使用自己的规则创建bean的名称(eg: 类 ...

  3. 【转】python3解析库lxml

    转自:http://www.cnblogs.com/zhangxinqi/p/9210211.html 阅读目录 1.python库lxml的安装 2.XPath常用规则 (1)读取文本解析节点 (2 ...

  4. PHP操作redis详细讲解(转)

    PHP中redis的使用   redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和z ...

  5. 最新sublime text 3 注册码license分享(亲测有效)

    —– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...

  6. JAVA实现网络文件下载

    HttpURLConnection conn = null; OutputStream outputStream = null; InputStream inputStream = null; try ...

  7. php array_map与array_walk使用对比

    array_map(): 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调函 ...

  8. 1)requests模块

    一:requests 介绍 requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装, 从而使得Pyt ...

  9. redhat7.3安装python3 pip3

    首先系统自带的python是python2 我们需要安装一个python3(这里的所有源码包都可以在环境中准备好,这样没有网也可以进行安装) 安装python 1.安装环境 # yum -y inst ...

  10. windows Sever 2012下Oracle 12c安装配置方法图文教程

    windows Sever 2012下Oracle 12c安装配置方法图文教程 Oracle 12c安装配置方法图文教程,具体内容如下 1.我们开启虚拟机 2.Windows Sever 2012启动 ...