20162325金立清 结对编程项目-四则运算 挑战出题
目录
一、需求分析
- 通过命令行参数形式指定题目要求
- 题目去重
二、设计思路
本周任务是给题目去重,方法是每生成一个题目,判断结果,将结果放入list中,接下来的题目答案如果与列表中的元素有相同,就重新生成题目。
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 + "
");
}
}
List
的indexOf
方法,返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。如果返回值大于等于0,说明重复,那么i自减一,继续循环;如果返回值小于0,没有重复,那么把结果加入列表,再把题目写入文件。
四、测试方法
前四个测试还能进行,到10000题就崩溃了。
-
去重
-
无去重
五、运行过程截图
-
在IDEA中运行,先设置参数
-
然后运行程序
-
运行成功后,会生成相应的txt文件
-
打开后可以看到题目
-
在命令行下编译运行
javac -d bin src/*.java
cd bin
java ExpressionGenerator <number-of-expressions> <number-of-operator> <output-file-path>
六、代码托管地址
七、遇到的困难及解决方法
- 问题1:运行检测工具的时候加载不出
- 解决办法:JDK安装与环境变量配置
八、对结对的小伙伴的评价
- 结对伙伴20162311张之睿的博客
一开始试着思考如何去重题目,但半天毫无头绪,最终还是由搭档完成编码,再把思路讲解给我听,我则负责把之前的代码复制过来进行修改,如把可执行的入口类改名为
ExpressionGenerator
等,还向搭档学习了页内Markdown格式。
- 打分:70分
- 依据:代码主要是搭档写的
九、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 |