结对编程四则运算第三周-挑战出题(20172301、20172304、20172328)
结对编程四则运算第三周-挑战出题
设计思路
1.关于题目等级类的设计(Arithmetic类): 题目类的设计中我们确定了四个等级的题目,分别是一级20(过程量)以内加减法,二级20(过程量)以内乘除法,三级20(过程量)以内加减乘除混合运算,并且实现括号的随机插入,四级题目实现分数的加减乘除。
- 在该类中调用了RationalNumber类,即分数基本内容。重新添加了一个fraction方法,让其随机输出真分数。
2.关于中缀表达式转后缀表达式的设计(Convert类):
- 首先,我们要清楚为什么要把中缀表达式转换为后缀表达式。
- 其实是为了计算机更好的计算。如果按照正常的运算顺序,计算机无法判断
1+2*3
优先计算哪个。所以,我们必须人为地进行优先级排序,把1+2*3
转换为123*+
这样计算机就懂了原来先做乘法哦。 - 那么,如何实现中缀表达式转换为后缀表达式呢?
- 大致的思路是这样。我们要定义一个字符串和一个栈。因为我们最后输出的东西——后缀表达式,是一个字符串。根据刚刚的例子
123*+
。我们应该能够发现,当我们判断一个中缀表达式的时候,应该把数字直接划入字符串,符号入栈,然后再依次弹出。 - 通过
StringTokenizer
类把字符串进行分割。 之后,要比较栈里面符号优先级的顺序。把后入栈的符号和栈内的符号进行比较。如果后入的优先级高,那么就入栈;反之,则弹出栈内的符号后入栈。
3.关于后缀表达式求值的设计(Comparision类): - 首先,我都把数字转化为Rationalnumber类型。整数就是分母为1的分数。
- 然后,通过switch语句,来分别调用Rationalnumber类的+-*/方法。
4.关于面向用户输出的设计(ArithmeticTest类): - 首先因为是和用户交互的类,所以引入了Scanner类。
- 其次再让用户选择其想要做的题目等级数和想要做的题目数,最后在每一次结束后询问用户是否想继续做题。
- 在实现过程中运用了swithch语句来高效定位,用which语句来创造循环来问用户还想不想继续做题;
- 运用新的convert类对象和Comparision类对象去计算随机生成的题目答案并对比用户输入的答案,提示用户正确与否,然后导入两个DecimalFormat类NumberFormat类,计算正确率并格式化输出。
- 最后写入文件的实现也是在该类中完成的,实现了将随机生成的题目和用户输入的答案写入到文件。
5.关于括号添加的设计和遇到的困难和解决: - 有关括号的内容我(小组成员段志轩)一开始想用ascii码和循环进行,具体步骤是先利用循环和charAt方法,找到符号的索引并存在数组里。然后通过随机数通过索引随机调用数组中的符号,然后在利用索引根据符号的相对位置插入前后括号。但是后来在运行时发现在处理两位数的时候会有错误。于是否掉了这个方案进行表示,但是后来在实际运行时发现不行。
- 于是后来改变了思路。就是在生成的计算式中的空格中做一些处理。生成计算式时在空格中设置一个随机数调用事先创建的数组。数组中只有两个元素。一个是空格,另一个就是带括号的两个随机数加和。
- 6.关于分数的设计实现理念:
- 通过
StringTokenizer
类把a/b
以/
分开。分别判断整数(分母为1)和分数的时候。
扩展需求
关于将题目写入文件: - 首先用java.io包中的FileWriter类创建一个叫xieru的对象,然后在定义两个ArrayList类;
- 然后在每一个case子句中将随机生成的题目添加到列表里面,然后再用ArrayList类的get方法找到具体对应的题目和用户输入答案,用for循环一个一个的写进去。
- 在for循环里面将两个数组按照制表符写入文件,可以排列整齐清晰。
- 关于从文件中读题:创建了一个新类ReadAndJudge想从我之前写好的文件中读题目再设计一个数组传入Convert类去将中缀表达式变成后缀表达式,然后再去计算后缀表达式,再将文件里的用户输入的答案读出,与计算结果比较,再输出正确与否和正确率最后将正确答案和正确率写入文件。
- 嗯,想的极其美好,但是因为想美观,写入的一串随机长度题目因为能力的限制,尝试了好久(Substring方法、存数组方法)都无法成功取出随机长度的题目,还没解决。
- 其中遇到的问题:遇到的问题就是最后阻挡的那个问题最严重的,其中还有只能写入用户的一个等级运行的问题,通过调试和修改达到了目的,但是忘记了错误截图。
项目的UML类图
❀❀❀我们的UML类图:※
相关测试过程截图
编写代码遇到的困难和解决办法
这周我们的错题都没有截图,具体的也记不大清,困难大概让我总结一下:如果需要具体的话可以去我们三个人前几周的博客去看。谢谢谢谢Thanks♪(・ω・)ノ
- 1.符号类型在输出中一直相同,数字在输出中也一直相同。
- 2.分数不能输出,在循环中实例化数组但没有实例化对象,因此无法调用个人faction方法。
- 3.在将中缀表达式变后缀表达式的过程中,不知道怎样把前一个类中生成的表达式用进来。
- 4.双等号错误。
- 5.“问题九”不变错误。
- 6.中缀变后缀中StringTokenizer类比String.toCharArray类好用的问题,分数不方便分割。
- 7.用ASCII码判断随机输入括号进阶到一位数到瓶颈期。
- 8.用户不知所措,哭死在不贴心的程序员面前。
项目的码云链接
码云链接
小组各个成员信息
- 1.20172301郭恺同学:驾驶员 善于编程 善于理解 推动整体发展进度 帮助组员理清思路 做为编程过程的指引的领导
- 2.20172304段志轩同学:驾驶员 善于创新 善于思考 解决局部难点困点 提供可行方案和需求路径 作为编程过程中的优秀首席工作者
- 3.20172328李馨雨同学:领航员 善于提问 善于督促 督促时间有效分配 检查程序部分错误 并思考动手完善 作为后勤做的特别好的老阿姨
给出小组最终贡献度划分(按百分比给小组各成员划分贡献度,各成员贡献之和为100%)
姓名 | 郭恺 | 段志轩 | 李馨雨 |
---|---|---|---|
学号 | 20172301 | 20172304 | 20172328 |
贡献率(%) | 38% | 32% | 30% |
小组各成员项目感想
- 20172301(郭恺):总体来说难度适中,因为毕竟人多力量大,思路的碰撞可以产生很多有趣的想法,让我受益匪浅。一定程度上,锻炼了自己多角度思考问题的能力。我觉得,这个在程序设计上是十分必要的。并且,如何精简程序也是一门学问,我觉得我们应该还需要拓展自己的知识。
- 20172304(段志轩):总的来说这次是我们第一次进行的独立编程,虽然很辛苦,但是感觉到了自身的编码功力得到了很大的提高,学习java不能纸上谈兵,还需要真刀真枪的实干。纸上得来终觉浅,绝知此事要躬行。
这正是我们结对小组的真实写照。而且,在此次编程中,我确实感受到了结对编程的好处与实际的效果,团结就是力量,希望下次还有结对编程的机会。 - 20172328(李馨雨):在刚接到项目的时候感觉特别复杂,但是随着一点点剖析分解成一个个模块,一点点的去解决,发现要考虑的问题更加具化,当然,遇到的问题很多,感觉这种项目对编程能力真的很有提高。不过在编程方面,还是很佩服我们小组的其他两位成员,思路比我清晰,速度比我快。我比较适合找问题,去测试,做一些简单细致的工作。学习了中缀转后缀和后缀表达式的求值,虽然代码实现是队友实现的,但是也是学习了新知。
给出小组结对编程照片
学习过程中在微信群中热烈的讨论和留下的两张手稿
PSP时间规划
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 65 |
Estimate | 估计这个任务需要多少时间 | 3 | 2 |
Development | 开发 | 2000 | 3000 |
Analysis | 需求分析 (包括学习新技术) | 350 | 300 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 10 |
Design UML | 设计项目UML类图 | 60 | 60 |
Coding | 具体编码 | 1500 | 2000 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 300 | 300 |
Size Measurement | 计算工作量(实际时间 ) | 2 | 2 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 10 |
合计 | 4395 | 5229 |
转载于:https://www.cnblogs.com/LXY462283007/p/9043683.html
结对编程四则运算第三周-挑战出题(20172301、20172304、20172328)相关推荐
- 结对编程-四则运算-题目去重
第一件事 更改上周出现问题的代码 上周我们的代码经过老师的检查后出现了许多错误这是我们不想看到的结果. 于是我们更改了原有代码的结构. public class Achv {public static ...
- 20162303 结对编程-四则运算(挑战出题)
结对编程-四则运算(挑战出题) 结对伙伴:20162307 张韵琪 需求分析 1.建立一个新的代码仓库用于储存代码 2.随机生成指定运算符个数.指定个数和指定存储路径的表达式,包括括号 3.根据要求进 ...
- 20172316 结对编程-四则运算 第一周 阶段总结
20172316 结对编程-四则运算 第一周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目 ...
- 张天钰 内大计算机学院,20175305张天钰Java结对编程四则运算
Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...
- 20172304 结对编程--四则运算实验总结
20172304 结对编程--四则运算 结对对象 20172301 郭恺 20172328 李馨雨 需求分析 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类 ...
- java 四则运算gui_结对编程-四则运算GUI的实现
一.项目成员以及coding地址: 二.结对编程题目描述 在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI,成为一个有基本功能.一定价值的程序.在下面的 ...
- 结对编程——四则运算过程
一.问题描述: 某公司程序员二柱的小孩上了小学二年级,老师让家长每天出100道(100以内)四则运算题目给小学生做. 二.结对对象:杨思思 博客地址:http://www.cnblogs.com/ci ...
- 结对编程-四则运算生成
结对编程-四则运算生成 java实现四则运算程序 github传送门:https://github.com/JJYdesu/operation 成员:赖展飞 江家懿 一.项目要求 实现一个自动生成小学 ...
- postfixcalc函数 java_结对编程--四则运算(Java)萧英杰 夏浚杰
结对编程--四则运算(Java)萧英杰 夏浚杰 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 使用 -n 参数控制生成题目的个数(实现) 使用 -r 参数控制题目中数值(自然数.真分数 ...
- 结对编程--------四则运算 实验总结2
结对编程----------四则运算 实验总结2 结对对象 20172301 郭恺 20172328 李馨雨 过程截图 这个是我们编写的main,叫ArithmeticTest1主要用于生成随机等级的 ...
最新文章
- RTX组织架构刷新出现了问题
- 大数据系统软件国家工程研究中心给大家拜年啦!
- 谷歌出现新冠肺炎确诊病例,限制员工出行;比尔·盖茨:可能成百年不遇的大流行病...
- 微信小程序python数据交换代码_一个微信小程序通过 DDP 协议和 Meteor 后端交换数据的简单例子...
- 大型电商项目3.0实战+支付宝、微信支付项目实战
- 上传问题分析--目录分离
- 面向对象编程(基础简介)
- python在工厂中的应用_什么是工厂函数?Python 中工厂函数怎么理解?
- 云南省高中计算机学业水平考试,云南省高中计算机学业水平考试技巧
- oracle 里数据的编码格式,oracle 数据的编码格式
- [唐诗]183清平调词三首-李白
- 【回顾】如何搭建一套个性化推荐系统?
- Xshell 连接腾讯云、阿里云centos服务器
- Atitit 命令指令的分类与权限 IMAP协议为例子 目录 1. 指令的作用的权限吧。 全局命令 未认证状态命令 未认证状态命令 选中状态指令	2 1.1. 1.在任何状态下都有效的指令(全局命
- 【java与智能设备】单选框 复选框 监听事件
- php隐藏json数据,PHP调用出json后出来的数目字 想隐藏掉 50份求高手帮忙下
- 交叉火力dsp手机调音软件_DSP680AM调音软件下载
- c语言与程序设计教材,C语言与程序设计(高等学校计算机专业规划教材)
- RS485接口与RJ45接口的区别与通讯限制
- 生命游戏(康威的生命游戏) Game Of Life - Conway Cocos Creator 3.x版实现
热门文章
- 33. Pandas计算同比环比指标的3种方法
- WORD文档未保存就关闭的解决方法
- 设计模式(十一)——树形结构:组合模式
- 【UnityWebGL】导出WebGL的问题汇总(持续更新)
- 天宇优配|“宁组合”全线大跌,“蔚小理”也重挫!医药
- Word如何让样式库中的样式不添加到自动生成的目录中
- adc0809工作过程C语言,ADC0809引脚图、时序图、工作流程图详解
- 最新最全自己动手做一个富文本编辑器(附源码 api)
- 常见文件扩展名(后缀)
- 使用Layui搭建后台管理界面