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 |