20165233结对编程项目-四则运算(第二周)

20165233结对编程项目-四则运算(第二周)

码云连接

需求分析

结对编程项目-四则运算(第一周)html

设计思路

  • 本周须要实现的功能是能够运算真分数的四则运算,因此每一个方法中要对整数与真分数的状况分别进行讨论。
  • add,substract,multiply,divide四个方法中,首先要进行是整数仍是真分数的判断。对于真分数,首先利用split()方法,将用户输入的计算符号去掉,即经过+-*÷将输入的式子,把数字分隔出来。再利用indexOf()来判断是不是个分数。随后,利用公式来进行分数的四则运算。以加法为例:加法是通分来进行计算的。好比1/2+1/3,分子是1*3+1*2,分母是2*3,如下是代码实现:
result=simplefraction(((Integer.parseInt(str1[0])*Integer.parseInt(str2[1]))
+(Integer.parseInt(str2[0])*Integer.parseInt(str1[1])))
,(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));
  • 此时获得的是两个单独的数,即56。上面程序中的simplefraction()就是给计算出的两个数进行约分与添加/的方法。约分的思想是先求出两个数的最大公因子,如果1,就直接添加/;若不是1,则给每一个数都除以得出的最大公因子。

代码实现

  • 以加法为例的方法:
public void add(String s)//加法
    {
        String[] str=s.split("\\+");
        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
        {
            String[] str1=str[0].split("[/]");
            String[] str2=str[1].split("[/]");
            if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)//分母不为零
            {
                result =simplefraction(((Integer.parseInt(str1[0])*Integer.parseInt(str2[1]))
                        +(Integer.parseInt(str2[0])*Integer.parseInt(str1[1])))
                        ,(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));
            }else{
                throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
            }
        }
        else{//整数
            if( Integer.parseInt(str[0])<1000&&Integer.parseInt(str[1])<1000&&Integer.parseInt(str[0])>-1000&&Integer.parseInt(str[1])>-1000)
            {
                result = Integer.parseInt(str[0])+Integer.parseInt(str[1])+"";
            }

            else{
                throw new IllegalArgumentException("overrun!");}//数值范围超出时抛出异常
        }

 }

UML类图

功能截图

  • 此程序有如下几个缺陷:git

    - 没有考虑整数除以整数会得出真分数的状况。
     - 没有考虑整数与真分数进行运算的状况。
     - 没有考虑两个以上的数进行运算的状况。
     - 没有考虑添加小括号后运算的优先级的状况。
  • JUnit测试编程

结对感觉

  • 本周对程序进行了完善。以前只有对整数的四则运算,而本周添加了对于真分数的四则运算,并能够将结果进行约分的较高级的功能。
  • 咱们因为不知道怎么处理真分数中的/,并如何将数字提取出来进行运算,因此借鉴了码云上一位大神的代码。先将算式中的符号与真分数分隔,在经过indexOf把数字提取出来进行通分之类的运算,约分后再将/放回两数之间,这样的代码实现使我和个人小伙伴收获颇多,又掌握了一门新的技能。
  • 在这位大神程序的理解上,咱们有效地实现告终对的优势,用纸笔进行推算,并在我不懂的地方,个人小伙伴给我进行讲解,我解决了个人小伙伴看代码中的疑问。

PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 25
Estimate 估计这个任务须要多少时间 120 120
Development 开发 50 60
Analysis 需求分析(包括学习新技术) 50 30
Design Spec 生成设计文档 60 60
Design Review 设计复审(和同事审核设计文档) 30 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 40
Design 具体设计 60 60
Coding 具体编码 35 30
Code Review 代码复审 15 15
Reporting 报告 60 60
Test Report 测试报告 30 45
Size Measurement 计算工做量 20 25
Postmortem & Process Improvement Plan 过后总结, 并提出过程改进计划 10 15
合计 620 630
相关文章
相关标签/搜索