20162311 结对编程项目-四则运算 挑战出题

20162311 结对编程项目-四则运算 挑战出题

目录

一、需求分析

  • 通过命令行参数指定生成的题目数量、题目包含的运算符数量和保存题目的文件
  • 每次生成的题目不能有重复

返回目录

二、设计思路

前两周已经将主要的代码写好了,这周的任务一个是给题目去重;还有一个是上次老师指出的判题错误问题。判题错误是因为中缀转后缀表达式出现了问题,具体的修改我在上周博客的评论区发了评论。这里主要讲题目去重。我用的方法是判断题目的结果,结果一样则表明重复,就需要重新生成题目。虽然有些笨,但也只能想到这了。思路就是每生成一个题目,计算结果,将结果放入列表中,接下来的题目的答案如果与列表中的元素有相同,就重新生成题目。

UML类图
1063734-20170604204825258-1310974057.png

返回目录

三、实现过程中的关键代码解释

  • 去重代码
 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");
            }
}

ListindexOf方法,返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。如果返回值大于等于0,说明重复,那么i自减一,继续循环;如果返回值小于0,没有重复,那么把结果加入列表,再把题目写入文件

返回目录

四、测试方法

测试过程出了些问题。前面四个还可以进行,到10000题就不行了。但我也想不出什么好的去重方法,就只能这样了。下面有加了去重功能的代码测试截图和没加去重功能代码的测试截图。

  • 加了去重
    1063734-20170604194524524-554740060.png

1063734-20170604194742180-4695492.png
1063734-20170604194748289-1595264450.png
1063734-20170604194753118-1834879635.png
1063734-20170604194757618-169186834.png

  • 没加去重
    1063734-20170604202000227-1876898195.png

1063734-20170604202013071-257135458.png
1063734-20170604202028227-1187239747.png
1063734-20170604202044211-246864571.png
1063734-20170604202057289-1330528237.png
1063734-20170604202110758-1879021371.png
1063734-20170604202121211-1030922313.png

返回目录

五、运行过程截图

  1. 在IDEA中运行,先设置参数
    1063734-20170604195354461-1653209577.png

  2. 然后运行程序
    1063734-20170604195502243-112985467.png

  3. 运行成功后,会生成相应的txt文件
    1063734-20170604195557930-674158999.png

  4. 打开后可以看到题目
    1063734-20170604195642883-1754760853.png

  5. 在命令行下编译运行
    • 在根目录下执行javac -d bin Project/*.java,会将class文件生成在bin目录中
    • 在根目录下执行Java -cp bin ExpressionGenerator 10 1 10.txt即可
      1063734-20170604202851321-1483866855.png

注:1.如果加了去重代码,题目在1000以上就会出问题
2.在命令行下运行要删除中文注释,否则会出现乱码

返回目录

六、代码托管地址

  • 码云地址

    注:提交的代码为没有加去重的代码。

返回目录

七、遇到的困难及解决方法

  • 问题1:中缀转后缀出现问题
  • 解决办法:先测试方法,发现有问题
    1063734-20170604200240758-1410047572.png
    本来我输的是正确结果,但却通不过测试。于是我设置断点进行调试,发现了问题。具体解决方法我在上周博客的评论区发了评论。解决之后就正常了。

  • 问题2:如何给题目去重
  • 解决方法:目前我只想到上面所说的方法,还无法完全解决这个问题。
    返回目录

八、对结对的小伙伴的评价

因为这周最大的难题是解决题目去重,所以其他的任务我交给了她。我在码云上创建了项目,然后让她把之前的代码复制过来,然后指导她进行一些修改。比如把可执行的入口类改名为ExpressionGenerator等等。关于题目去重她没能给我什么帮助虽然我也做不出来,所以还需努力。只有学懂了才能提出自己的看法,自己没搞懂是无法产生自己的观点的。

  • 打分:35分
  • 依据:因为代码主要是我写的,她写的代码也是我设计的。不过搭档也在努力
    1063734-20170604203337633-1667093633.png

返回目录

九、PSP

PSP2.1Personal Software Process Stages预估耗时(小时)实际耗时(小时)
Planning计划
· Estimate· 估计这个任务需要多少时间0.50.5
Development开发
· Analysis· 需求分析 (包括学习新技术)24
· Design Spec· 生成设计文档1.51
· Design Review· 设计复审 (和同事审核设计文档)11
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)0.51
· Design· 具体设计23
· Coding· 具体编码24
· Code Review· 代码复审12
· Test· 测试(自我测试,修改代码,提交修改)11.5
Reporting报告
· Test Report· 测试报告11
· Size Measurement· 计算工作量0.50.5
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划0.50.5
合计13.520

返回目录

转载于:https://www.cnblogs.com/-zzr-/p/6938431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值