• 5.2,5.3


    一、我的结对小伙伴是:陈俊金 http://www.cnblogs.com/cjj19/

    二、运行环境:eclipse

    三、 我们一起合作做了完成了任务,控制了精度是小数点后两位,以及完善了程序,一起认真的研究代码中的错误。

    四、代码

    这一部分是测试用代码

    test1Test.java
    import static org.junit.Assert.*;
    
    
    import org.junit.Test;
    
    
    public class test1Test {
    
        @Test
        public void testMethodA() {
            try{
                setting set=new setting();
            int []a={11,6,2};
            char []c={'+','/'};
            int n=a.length-1;
            set.bijiao(a, n);
            test1.methodA(n, a, c);
            assertEquals(14.0, test1.getresult());
        }
            catch(Exception e)
            {
                 System.out.println("除数不能为0");
            }
    }
    }

    这一部分是计算的核心代码

    import java.math.BigDecimal;
    
    public class test1 {
    private static Object S = null;
    public static void methodA(int n,int b[],char d[]){//封装的类,传递的参数   n是运算符的个数   a是数字数组   c是符号数组
            
            int i,j;
            double a[]=new double[10];
            char c[]=new char[10];
            a[0]=b[0];
            for(i=0;i<n;i++)
            {
                a[i+1]=b[i+1];
                c[i]=d[i];
            }
            if(n==0) //运算个数为0,进行阶乘
            {
                for(i=(int) a[0];i>1;i--)
                {
                    a[0]=a[0]*(i-1);
                }
    
    
            }
            /*下面这部分是对算式进行解析并且进行四则运算*/
            else{
                for(i=0;i<=n;i++)
                {
                    if(c[i]=='*')
                    {
                        a[i]=a[i]*a[i+1];
                        for(j=i;j<n;j++) 
                        {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                        }
                        i=0;
                        n--;
                    
                    }
                    if(c[i]=='/')
                    {
                        a[i]=a[i]/a[i+1];
                        for(j=i;j<n;j++) 
                        {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                        }
                        i=0;
                        n--;
                
                    }
                }
                for(i=0;i<=n;i++)
                {
                    if(c[i]=='+')
                    {
                        a[i]=a[i]+a[i+1];
                        for(j=i;j<n;j++) 
                        {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                            
                        }
                        i=0;
                        n--;
                    
                    }
                    if(c[i]=='-')
                    {
                        a[i]=a[i]-a[i+1];
                        for(j=i;j<n;j++) 
                        {
                            a[j+1]=a[j+2];
                            c[j]=c[j+1];
                        }
                        i=0;
                        n--;
                    }
                }
            }
            BigDecimal bg = new BigDecimal(a[0]);
            S=bg.setScale(setting.decimals, BigDecimal.ROUND_HALF_UP).doubleValue();
        }
    public static  Object getresult() {
        return S;
    }
    
    
    }
    test1

    程序的运行结果

    当把除数设为0时,由于抛出了异常,出现以下情况

    通过测试程序测试对于各种参数的支持。并能看到代码覆盖率。

    对于参数的支持

    分别对参数处于-1000~1000以及运算符超出4个进行了测试,结果如下

    超出1000时

    对于临界999进行计算,,这里我把正确值设为1,是为了方便查看得出的答案,18+999/20-(-20)=87.95是正确的。

    最小值小于-1000时

    临界-999时,得出的答案也是正确的

    当运算符超出4个时

    代码覆盖率

    我在进行不同运算的最后都加入一条输出语句,然后看代码是否都运行了一边,这里我把运算符的限制取消,写一个复杂的算式

    通过计算机可以看出计算的结果是正确的,并且代码都覆盖到了。这里面还进行了负数的运算。

    五、心得体会

    一开始这个作业出来的时候我不知道怎么做,在经过一番挣扎之后出来了这点东西。可以说这次的作业花了我很多的时间,同时也让我学习到了很多的东西。辛苦了很久,在和伙伴一起的努力下完成的感觉还真的是很不错的.单元测试和代码的覆盖我觉得自己的做法是不正确的,但是我也只能想到这种做法了,有不足的地方我现在也不知道要怎么改了!

  • 相关阅读:
    记一则玄乎奇玄的ADG误删自救事件
    ORACLE 日常信息查询sql
    Linux脚本判断磁盘容量
    postgresql数据库创建触发器记录表修改时间
    centos7关闭防火墙
    centos7 安装mysql5.7(二进制tar包方式)
    Oracle11G RMAN-06214: Datafile Copy /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_cpbd.f
    SQLPlus中set命令
    oradehub命令
    记一报错解决:ORA-00845: MEMORY_TARGET not supported on this system
  • 原文地址:https://www.cnblogs.com/ZHL-Dragon/p/4483361.html
Copyright © 2020-2023  润新知