zoukankan      html  css  js  c++  java
  • 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 + "
    ");
                }
    }
    

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

    返回目录

    四、测试方法

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

    • 加了去重




    • 没加去重






    返回目录

    五、运行过程截图

    1. 在IDEA中运行,先设置参数

    2. 然后运行程序

    3. 运行成功后,会生成相应的txt文件

    4. 打开后可以看到题目

    5. 在命令行下编译运行

      • 在根目录下执行javac -d bin Project/*.java,会将class文件生成在bin目录中
      • 在根目录下执行Java -cp bin ExpressionGenerator 10 1 10.txt即可

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

    返回目录

    六、代码托管地址

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

    返回目录

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

    • 问题1:中缀转后缀出现问题

    • 解决办法:先测试方法,发现有问题

      本来我输的是正确结果,但却通不过测试。于是我设置断点进行调试,发现了问题。具体解决方法我在上周博客的评论区发了评论。解决之后就正常了。

    • 问题2:如何给题目去重

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

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

    因为这周最大的难题是解决题目去重,所以其他的任务我交给了她。我在码云上创建了项目,然后让她把之前的代码复制过来,然后指导她进行一些修改。比如把可执行的入口类改名为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

    返回目录

  • 相关阅读:
    Android 音视频开发(六): MediaCodec API 详解
    Android 音视频开发(五):使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
    Android 音视频开发(四):使用 Camera API 采集视频数据
    Android 音视频开发(三):使用 AudioTrack 播放PCM音频
    Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件
    Android 音视频开发(一) : 通过三种方式绘制图片
    Android 使用View绘制文字(DrawText)技术总结
    Mac OS 中安装 autoconf 和 automake
    Android 自定义 View 绘制
    关于 Socket 设置 setSoTimeout 误用的说明
  • 原文地址:https://www.cnblogs.com/-zzr-/p/6938431.html
Copyright © 2011-2022 走看看