• 四则运算第二周实验报告


    实验名称:结对编程项目-四则运算
    实验时间:2017.5.16
    实验人员:20162309邢天岳(结对搭档201622313苑洪铭)
    指导老师:娄老师、谢老师
    实验内容: 第二周(2017-5-21 23:59截止)输出整体总结博客
    设计思路
    真分数(题目生成/题目运算判题)
    JUnit测试(idea环境测试)
    扩展需求
    实验步骤:在第一周实验的基础上,对四则运算的代码增加难度级数,不同的级数需要生成不同类型的题目,分级过程中,题目去重也是需要考虑的一个环节,也放在难度级数这一类别中去完成。题目运算(判题)可独立使用转换为后缀表达式,这是第二周实验的一个重点也是难点,中缀转后缀之后利用栈的方法进行计算,这种方式符合教材中的指导思路,对巩固教材知识有很大帮助。首先创建的是计算用的主类,

    编写过程中需要注意的一点object类的格式规范,在运行的过程中,系统报错,对产生的算式无法计算结果。调用Integer.parseInt方法时需要更改字符串的格式,在这里苑洪铭同学将其改为了fbi格式,修改完毕后就可以正常运行了。

    因为本次实验分为两次完成,对运算符的加入是整个程序较为核心的部分,但代码的编写比较常规,这里使用到了.equals方法,同样这里需要if else循环语句,语法结构也相同,需要的是替换计算时的符号,这里String了type类,两个double浮点数类型的值(start和end)。难度级数的引入,考察到了每个人自己的四则运算程序的整体掌握情况,根据自己的水平完成代码。

    在本周对代码的修改中,我新加入了运算过程中的有无括号问题,这里在查阅了资料后使用了Pattern方法,先输入if-else的基本语句,然后是用patten.compile定义一个新的变量,这里的一部分是较为陌生的方法,在网上查阅了对应的部分知识,了解到patten和matcher两者需要合作,而patten的类方法只支持了正对表达式的分组支持,单独的patten在使用有了很大的限制。这里补充了关于patten方法的一些使用实例,包括使用方法,以及在四则运算程序的对应代码的编写。



    关于多语言问题,在和苑洪铭同学共同进行了研究后完成:

    在完善了程序的一些需要改进的地方之后,再需要做的就是运行程序了,增加代码的过程中会出现一些错误,需要注意几个比较重要的点:
    1.代码的量比较大,在多次定义变量时,需要注意调用的方法时public或private要注意变名的一致性。
    2.继承的时候注意需要调用的方法,完全的继承会对运行产生干扰。同时,要注意计算的先后顺序问题,有无括号要分不同情况。
    3.在使用新的类和新的方法时,需要注意调用过程的合理性,避免一些逻辑上的语法错误,就比如patten类的使用具有一定的条件性。

    本次实验代码的UML类图:

    实验过程中遇到的问题:
    1.新加入的Mathmatic类无法运行,经过检查并不是编写上的错误(idea并没有报错),idea的运行栏里没有运行的选择。
    2.测试类SizheTool类的时候,调用Integer.parseInt时出现变量格式不符合。

    解决方案:
    1.新编写的Mathmatic类需要调用主类size中的一个方法,选择题目个数的scan.nextInt,这里在调用的时候需要进行修改,在变量名没有改变的前提下调用。
    2.将格式改为自己定义的fbi,因为Integer 类在对象中包装了一个基本类型 int 的值,Integer 类型的对象包含一个 int 类型的字段。 此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。修改过后可以正常运行。

    结对情况:
    本次实验我的结对搭档依然是20162313苑洪铭同学,苑洪铭同学依然很细心地检查代码中的bug,同时在最小范围内对代码进行修改,遇到问题时,积极在网上寻找资料,除了patten类,还包括操作符operator的一些使用的注意事项。通过和苑洪铭同学的学习,我对java概念上的理解得到了帮助。
    同时,苑洪铭同学仍然有部分不足的地方,比如在继承这一章节,苑洪铭同学没有很好地掌握,在巩固了教材知识后,我们一起完成了测试类对两个主类的继承编写。

    结对搭档20162313苑洪铭同学博客地址:http://www.cnblogs.com/yuanhongming/

    本次实验的PSP表格:

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

    实验总结:
    本次实验我们基本完成了关于四则运算的代码编写,在整体上大致构成了关于像四则运算一类的代码的框架,需要总结的部分大致分为一下几点:
    1.在调用方法时,不能生搬硬套,要根据本身代码的具体情况对包括变量名以及变量类型进行修改,同时声明变量要注意变量类型。
    2.关于patten类的调用环境问题,以及于matcher的协同使用问题。
    3.String类的str.Value,关于double改变格式和返回值的问题


    在网上查阅了资料,并且结合了自己的代码。

    本次实验算是一个比较大的工程了既考验了我们的实际动手能力,也考察了我们的自我学习和自我修缮能力,同时也注重了对java基础知识的理解情况,认真对待本次实验,会有很大的收获。本次实验也告诉我,在编程的过程中,我们不仅要在自主动手中学会检测、修改、编写代码,包括测试代码的编写,还需要结合网上的知识进行取长补短,网上有很多可以汲取的东西值得借鉴。学会选择性地学习,能够更好将知识转化为自己的,做到为我所用。

  • 相关阅读:
    Linxu 挂载光盘和硬盘
    Linux firewall
    指纹获取 Fingerprint2
    Vue 封装的组件生命周期钩子
    vue富文本编辑,编辑自动预览,单个图片上传不能预览的问题解决:
    vue 集成百度富文本编辑器
    axios 的二次封装
    element 列表中已选的标记
    element 表单的input循环生成,并可单个input失去焦点单个验证并保存; (多个表单实例)
    axios 二进制流导出
  • 原文地址:https://www.cnblogs.com/Metwox/p/6859903.html
Copyright © 2020-2023  润新知