20162317-20162315结对编程(四则运算)第二周阶段总结

20162317-20162315结对编程(四则运算)第二周阶段总结

需求分析

  • 实现真分数的四则运算。仍使用之前的栈运算的框架对真分数进行计算。现在缺少对真分数的构建以及真分数自身特殊运算法则的构建。

设计思路

  • 我们已经完善了不包含分数时的四则运算。现在我们只需要多写一个类,使他能构造分数,在这个类里面也要包含最后要调用的分数的计算方法(分数含有分子分母,是两部分的算法,和整数,小数是不一样的,还涉及到通分约分问题)。

关键代码解释


  • 这里先构建了一个分数,把它拆分为分子与分母两个部分来使用。

  • 这也是与之前整数运算不一样的地方。这个方法里面我们让用户输入他们的结果。调用split把用户答案通过“/”截成分子分母。这个方法里面有if else条件语句结构是因为结果可能有两种。比如3/5 X 5/3 的答案就是1,这个时候“/”以及分母“1”都被隐藏了。所以只显现一个字符。在方法里面设置了默认分母为1,只需要比较分子。

  • 倒数只需要颠倒分子分母就行了,这个在分子除法里要用到。袁逸灏查了Math方法,写了这个约分的方法:在分子分母里面找到公共数common,再分别相除,输出约分后的分数。

  • 这是重写过的适用于分数的加减乘除方法。每个方法内部都用分子分母单独运算。通分方法并未像约分一样独立写出来,而是根据每种不同的运算方式写在运算方法下。除法直接调用了上面写过的Daoshu方法。

junit测试


这里面的senior里的方法都只涉及int类型,所以是测试结果为double或者分数的。

数据修改之后证明divide方法的编写没有错误。

运行结果

遇到的困难及解决方法

  • 如何把得到的结果输出成最简形式?
  • 最开始我们输出的分数都没有约分过。后来袁逸灏查到了Math方法下有一个取公约数的方法,将分子分母除以公约数就可以化简了。我们写出了独立的约分方法,最后放在输出结果的位置使用将答案规范。
  • 测试的时候自己打上去的答案和输出结果一样的,输出却是You are wrong.
  • 最开始袁逸灏设置的是识别三个字符串长度的运算结果。所以分子分母只要超过一位就会错误,修改了之后可以正常使用了。

代码链接

时间记录表

Personal Software Process Stages | 预估耗时(分钟)|实际耗时(分钟)
---|---|---|---|---
计划| (第一周)20/(第二周)30|(第一周)40/(第二周)80
·估计耗时 |(第一周)20/(第二周)25|(第一周)40/(第二周)/65
开发|(第一周)435/(第二周)500|(第一周)525/(第二周)600
·需求分析 |(第一周)30/(第二周)15|(第一周)50/(第二周)8
·生成设计文档|(第一周)20/(第二周)25|(第一周)30/(第二周)20
·具体设计|(第一周)30/(第二周)50|(第一周)50 /(第二周)80
·具体编码|(第一周)300/(第一周)450|(第一周)320/(第二周)600
·代码复审|(第一周)30/(第一周)120|(第一周)15/(第二周)80
·测试|(第一周)25/(第二周)15|(第一周)60/(第二周)30
报告|(第一周)105/(第二周)90|(第一周)110/(第二周)160
·测试报告|(第一周)50/(第二周)65|(第一周)80/(第二周)80
·事后总结,并提出过程改进计划|(第一周)35(第二周)65|(第一周)20/(第二周)32
·分析下一步计划|(第一周)20/(第二周)20|(第一周)10/(第二周)40
合计|(第一周)460/(第二周)1470|(第一周)675(第二周)1885

posted @ 2017-05-21 20:43  162315  阅读(138)  评论(1编辑  收藏  举报