结对编程项目-四则运算 挑战出题
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 + "\r\n");
            }
}
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 | 
                    
                











                
            
        
浙公网安备 33010602011771号