20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结
20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结
结对伙伴
学号 :20172307
姓名 :黄宇瑭
伙伴第一周博客地址: http://www.cnblogs.com/20172307hyt/p/8975967.html
需求分析
功能要求
1.自动生成题目
可独立使用(能实现自己编写测试类单独生成题目的功能)
可生成不同等级题目,类似于:
1级题目:2 + 5 =;
10 - 5 =
之类的两个数,一个运算符的题目
2.题目运算(判题)
可独立使用
实现中缀表达式转为后缀表达式并计算
判断用户答题正误,并输出正确结果
3.支持真分数
可独立使用
实现分数算式的计算
3.题目去重(扩展需求,加分项)
可独立使用
实现对自动生成表达式的去重:如下
若生成:2 + 5 =;
5 + 2 =
为同一题目对需求的理解
1.要有一个生成随机题目的类,题目中的数可能分数,也可能是整数。 2.要有一个将中缀表达式转化为后缀表达式的类
3.要有一个计算后缀表达式的类
4.要有一个判断题目的类
5.将以上类进行组合写出产品代码后续拓展的可能性
具体的题目去重思路还没有产生,问题应该不大。
设计思路
NML类图
思路:
要有一个能够生成随机最简分数的类,并将它运用到生成随机题目的类中去,同时生成的题目中数字和运算符之间要有一个空格符,方便在转换为后缀表达式的时候使用栈。最后要实现交互,即让客户回答问题,然后系统判断是否正确并告诉客户。相关过程截图
生成随机最简分数的类
Fraction
public class Fraction {int numerator, denominator;public Fraction() {numerator= (int) (Math.random()*51);denominator= (int) (Math.random()*51);if(denominator==0)denominator=1;reduce();}public void reduce() {if (numerator != 0) {int common = gcd(Math.abs(numerator), denominator);numerator = numerator / common;denominator = denominator / common;}}private int gcd(int num1, int num2) {while (num1 != num2)if (num1 > num2)num1 = num1 - num2;elsenum2 = num2 - num1;return num1;}public String getFraction(){String result;if(numerator==0)result="0";elseif(denominator==1)result=numerator+"";elseresult=numerator+"/"+denominator;return result;}
}
- 生成相应个数表达式的类
Create
public class Create {String[]Arraylist;int num,rate;public Create(int num ,int rate){this.num=num;this.rate=rate;Arraylist=new String[num];}public String questionRate(int a){String express="";String[]OC={"+","-","×","÷"};for (int c=0;c<a;c++) {Fraction b = new Fraction();String d=b.getFraction();String e=OC[(int) (Math.random() * 4)];while (d=="0"&&e=="÷") {Fraction f=new Fraction();d = f.getFraction();}express +=d+" "+e+ " ";}Fraction c=new Fraction();String e=c.getFraction();while (express.charAt(4*rate-1)=='÷'&&e=="0"){Fraction d=new Fraction();e=d.getFraction();}express+=e+" "+"=";return express;}public void QuestionNum(){Create F=new Create(num,rate);for(int a=0;a<num;a++)Arraylist[a]=F.questionRate(rate);}public String[] getArraylist() {return Arraylist;}public String getArraylist2(int a){String b;b=Arraylist[a];return b;}public String toString() {String a="";for (int b=0;b<num;b++)a+=Arraylist[b]+"\n";return a;}
}
- 测试类
CreateTest
运行截图
遇到的困难及解决方法
- 刚开始编写用于生成整数类型的题目的类时出现逻辑错误,导致运行测试类时出现越界。
错误代码截图如下:
测试类运行结果如下:
改过后的代码截图如下:
错因分析:错误代码中红圈标记的区域便是错误所在,该语句创建了一个空数组,与本意创建一个存放num个String型表达式的数组相违背。从而出现越界的现象。而改过之后的代码中是在构造函数中对数组进行了实例化,也就达到目的了。
对结对的小伙伴做出评价
结对小伙伴黄宇瑭童鞋的优点就是能够很认真的倾听我的一些想法,同时能够对我的想法提出自己的补充建议,而且他非常的耐心,乐于助人,在我敲代码敲累了的时候他会主动帮我接力。缺点的话可能就是在编写代码的时候对自己的要求不够严苛,有时会出现一些输入错误。整体上来说,与黄宇瑭童鞋的结对学习甚是愉快,希望在接下来的结对编程项目中再接再厉,共同进步!!
PSP时间统计
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 70 |
Estimate | 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 600 | 700 |
Analysis | 需求分析 (包括学习新技术) | 120 | 180 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
Design UML | 设计项目UML类图 | 60 | 90 |
Coding | 具体编码 | 180 | 210 |
Code Review | 代码复审 | 180 | 120 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 120 |
Size Measurement | 计算工作量(实际时间 | 30 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 1440 | 1620 |
转载于:https://www.cnblogs.com/zhaoxiaohai/p/8976043.html
20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结相关推荐
- 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...
- 20175208『Java程序设计』课程 结对编程练习_四则运算
20175208 结对编程练习_四则运算(第一周) 结对成员:20175208张家华,20175202葛旭阳 一.需求分析: 实现一个命令行程序,要求: (1)自动生成指定数量的小学四则运算题目(加. ...
- java安装 1723_2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段...
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...
- 2017-2018-2 165X 『Java程序设计』课程 助教总结
2017-2018-2 165X 『Java程序设计』课程 助教总结 本学期完成的助教工作主要包括: 编写300道左右测试题,用于蓝墨云课下测试: 发布博客三篇:<2017-2018-2 165 ...
- 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)
20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...
- 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算
20165236 2017-2018-2 <Java程序设计>结对编程练习_四则运算 结对小组:叶佺.郭金涛 一.需求分析: 1.能随机生成n道四则运算题目,n由使用者输入: 2.支持多种 ...
- 20172316 结对编程-四则运算 第一周 阶段总结
20172316 结对编程-四则运算 第一周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目 ...
- java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第二周:整体性总结)...
#结对对象与其博客链接 20175312陶光远:https://www.cnblogs.com/20175312-tgy/p/10697238.html #需求分析 (一)功能需求 1.自动生成题目( ...
- java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)...
结对对象与其博客链接 需求分析 (一)功能需求 1.自动生成题目(本周已完成) 可生成包含不同运算符个数的题目 2.题目运算(判题)(这周先做了真分数,运算和后缀计算打算下周做) 实现中缀表达式转为后 ...
最新文章
- c++中虚函数和纯虚函数定义
- 计算机考研专业课资料,计算机考研专业课资料.doc
- python 隐马尔可夫链
- 2021牛客暑期多校训练营1 H-Hash Function(数学+FFT)
- vue 通信、传值的多种方式(超详细)
- ktv数据表设计 1216
- linux cp -w,对Linux的cp命令的思考
- sstv解码_SSTV通联活动:ISS国际空间站2020年1月30日和1月31日
- 7-21 九宫格输入法 (15 point(s))
- 【气动学】基于matlab气动力导弹姿态控制【含Matlab源码 969期】
- MSP430 MSP430单片机软件开发集成环境CCS
- nodejs EADDRINUSE API拒绝访问
- 实验室信息化建设助力医药研发
- 32位java8,jdk8下载,解压版
- NetApp存储常用检查命令
- 【Cortex-M0】11串口控制器
- A-PDF All to MP3 Converter 2.0.0 (.wav) Buffer Overflow Exploit 分析
- HSL、RGB颜色转换
- mx250是什么_MX250和150有什么区别 MX250和MX150区别对比介绍
- 博士第一年,要把这些计算机基础课程学好(附教程)