20162311 结对编程项目-四则运算 挑战出题
20162311 结对编程项目-四则运算 挑战出题
目录
一、需求分析
- 通过命令行参数指定生成的题目数量、题目包含的运算符数量和保存题目的文件
- 每次生成的题目不能有重复
二、设计思路
前两周已经将主要的代码写好了,这周的任务一个是给题目去重;还有一个是上次老师指出的判题错误问题。判题错误是因为中缀转后缀表达式出现了问题,具体的修改我在上周博客的评论区发了评论。这里主要讲题目去重。我用的方法是判断题目的结果,结果一样则表明重复,就需要重新生成题目。虽然有些笨,但也只能想到这了。思路就是每生成一个题目,计算结果,将结果放入列表中,接下来的题目的答案如果与列表中的元素有相同,就重新生成题目。
UML类图
三、实现过程中的关键代码解释
- 去重代码
for (int i=0;i<count;i++) {
expr = mq.getExper(level);
result = calculator.evaluate(nts.conversion(expr));
if(list.indexOf(result)>= 0) {
i--;
}else {
list.add(result);
iof.WriteQuestionsToFile(expr + "\r\n");
}
}
List
的indexOf
方法,返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。如果返回值大于等于0,说明重复,那么i自减一,继续循环;如果返回值小于0,没有重复,那么把结果加入列表,再把题目写入文件
四、测试方法
测试过程出了些问题。前面四个还可以进行,到10000题就不行了。但我也想不出什么好的去重方法,就只能这样了。下面有加了去重功能的代码测试截图和没加去重功能代码的测试截图。
- 加了去重
- 没加去重
五、运行过程截图
-
在IDEA中运行,先设置参数
-
然后运行程序
-
运行成功后,会生成相应的txt文件
-
打开后可以看到题目
-
在命令行下编译运行
- 在根目录下执行
javac -d bin Project/*.java
,会将class文件生成在bin目录中 - 在根目录下执行
Java -cp bin ExpressionGenerator 10 1 10.txt
即可
- 在根目录下执行
注:1.如果加了去重代码,题目在1000以上就会出问题
2.在命令行下运行要删除中文注释,否则会出现乱码
六、代码托管地址
注:提交的代码为没有加去重的代码。
七、遇到的困难及解决方法
-
问题1:中缀转后缀出现问题
-
解决办法:先测试方法,发现有问题
本来我输的是正确结果,但却通不过测试。于是我设置断点进行调试,发现了问题。具体解决方法我在上周博客的评论区发了评论。解决之后就正常了。 -
问题2:如何给题目去重
-
解决方法:目前我只想到上面所说的方法,还无法完全解决这个问题。
返回目录
八、对结对的小伙伴的评价
- 结对伙伴20162325金立清的博客
因为这周最大的难题是解决题目去重,所以其他的任务我交给了她。我在码云上创建了项目,然后让她把之前的代码复制过来,然后指导她进行一些修改。比如把可执行的入口类改名为
ExpressionGenerator
等等。关于题目去重她没能给我什么帮助虽然我也做不出来,所以还需努力。只有学懂了才能提出自己的看法,自己没搞懂是无法产生自己的观点的。
- 打分:35分
- 依据:因为代码主要是我写的,她写的代码也是我设计的。不过搭档也在努力
九、PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 0.5 | 0.5 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 2 | 4 |
· Design Spec | · 生成设计文档 | 1.5 | 1 |
· Design Review | · 设计复审 (和同事审核设计文档) | 1 | 1 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 0.5 | 1 |
· Design | · 具体设计 | 2 | 3 |
· Coding | · 具体编码 | 2 | 4 |
· Code Review | · 代码复审 | 1 | 2 |
· Test | · 测试(自我测试,修改代码,提交修改) | 1 | 1.5 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 1 | 1 |
· Size Measurement | · 计算工作量 | 0.5 | 0.5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 0.5 | 0.5 |
合计 | 13.5 | 20 |