• 作业5 四则运算 测试与封装 5.2


    作业5 四则运算 测试与封装  5.2

     

     

    开发环境:   Eclipse

    开发人员:   欧其锋(201306114305)

                     余汉城(201306114317)(http://www.cnblogs.com/yuhancheng/

         分工:   欧其锋:异常处理

                     余汉城:重构

     


    源代码:

     

      1 package GongNengpk;
      2 
      3 import GongNengpkTest.ChuShuLingException;
      4 import GongNengpkTest.JCException;
      5 
      6 
      7 
      8 
      9 @SuppressWarnings("serial")
     10 public class HeXinCode {
     11     
     12     public int Jia(int a,int b)
     13     {
     14         String str="";
     15         if(a>0 && b<0)
     16         {
     17             str=a+"+"+"("+b+")="+(a+b);
     18             
     19         }
     20         else if(a<0 && b>0)
     21         {
     22             str="("+a+")"+"+"+b+"="+(a+b);
     23         }
     24         else
     25         {
     26             str=a+"+"+b+"="+(a+b);
     27         }
     28         System.out.println(str);
     29         return a+b;
     30     }
     31     public int Jia(int a,int b,int c)
     32     {
     33         String str="";
     34         if(a<0 && b>0 && c>0 )
     35         {
     36             str="("+a+")"+"+"+b+c+"="+(a+b+c);
     37         }
     38         else if(a<0 && b<0 && c>0)
     39         {
     40             str="("+a+")"+"("+b+")"+c+"="+(a+b+c);
     41         }
     42         else if(a<0 && b<0 && c<0)
     43         {
     44             str="("+a+")"+"("+b+")"+"("+c+")"+"="+(a+b+c);
     45         }
     46         else if(a<0 && b<0 && c>0)
     47         {
     48             str="("+a+")"+"("+b+")"+c+"="+(a+b+c);
     49         }
     50         else
     51         {
     52             str=a+"+"+b+"+"+c+"="+(a+b+c);
     53         }
     54         System.out.println(str);
     55         return a+b;
     56     }
     57     public int Jian(int a,int b)
     58     {
     59         String str="";
     60         if(a>0 && b<0)
     61         {
     62             str=a+"-"+"("+b+")="+(a-b);
     63             
     64         }
     65         else if(a<0 && b>0)
     66         {
     67             str="("+a+")"+"-"+b+"="+(a-b);
     68         }
     69         else
     70         {
     71             str=a+"-"+b+"="+(a-b);
     72         }
     73         System.out.println(str);
     74         return a-b;
     75     }
     76     public int Cheng(int a,int b)
     77     {
     78         String str="";
     79         if(a>0 && b<0)
     80         {
     81             str=a+"*"+"("+b+")="+(a*b);
     82             
     83         }
     84         else if(a<0 && b>0)
     85         {
     86             str="("+a+")"+"*"+b+"="+(a*b);
     87         }
     88         else
     89         {
     90             str=a+"*"+b+"="+(a*b);
     91         }
     92         System.out.println(str);
     93         return a*b;
     94     }
     95     public int Chu(int a,int b) throws ChuShuLingException
     96     {
     97         int end=-1;
     98         String str="";
     99         if(b==0)
    100         {    
    101             throw new ChuShuLingException();    
    102         }
    103         else
    104         {
    105         if(a>0 && b<0)
    106         {
    107             str=a+"/"+"("+b+")="+(a/b);
    108             
    109         }
    110         else if(a<0 && b>0)
    111         {
    112             str="("+a+")"+"/"+b+"="+(a/b);
    113         }
    114         else
    115         {
    116             str=a+"/"+b+"="+(a/b);
    117         }
    118         System.out.println(str);
    119         end=a/b;
    120         }
    121         return end;
    122     }
    123     public int JC(int c) throws JCException
    124     {
    125         int end=-1;
    126         int jc=1;
    127         if(c<0)
    128         {
    129             throw new JCException();
    130         }
    131         else
    132         {
    133             
    134         for(int i=c;i>0;i--)
    135         {
    136             jc=jc*i;
    137             end=jc;
    138         }
    139         String str=c+"!="+end;
    140         System.out.println(str);
    141         }
    142         return end;
    143     }
    144     
    145 }
    HeXinCode
    1 package GongNengpkTest;
    2 
    3 public class JCException extends Exception {
    4     
    5     public JCException()
    6     {
    7         System.out.println("阶乘数不能小于0!");
    8     }
    9 }
    JCException
    1 package GongNengpkTest;
    2 
    3 public class ChuShuLingException extends Exception {
    4     public ChuShuLingException()
    5     {
    6         System.out.println("除数不能为0!");
    7     }
    8 
    9 }
    ChuShuLingException
     1 package GongNengpkTest;
     2 
     3 import static org.junit.Assert.*;
     4 
     5 import org.junit.Test;
     6 
     7 import GongNengpk.HeXinCode;
     8 
     9 
    10 
    11 
    12 
    13 
    14 public class HeXinCodeTest {
    15 
    16     HeXinCode hx=new HeXinCode();
    17     @Test
    18     public void testJia()
    19     {        
    20         int num4=hx.Jia(-3, 2,3);
    21         assertEquals(2,num4);
    22         
    23     }
    24     @Test
    25     public void testJian()
    26     {
    27         int num5=hx.Jian(-1, 5);
    28         assertEquals(-6,num5);
    29     }
    30     @Test
    31     public void testCheng()
    32     {
    33         int num6=hx.Cheng(-1, 5);
    34         assertEquals(-5,num6);
    35     }
    36      @Test
    37     public void testChu() throws ChuShuLingException 
    38      {
    39         HeXinCode hx=new HeXinCode();
    40         int num_6;
    41         try
    42         {
    43         num_6=hx.Chu(5, 0);
    44         assertEquals(5,num_6);
    45         }
    46         catch(Exception e)
    47         {
    48             
    49         }
    50             
    51      }
    52      @Test
    53      public void testJC() throws JCException 
    54      {
    55         HeXinCode hx=new HeXinCode();
    56         int num_7;
    57         try{
    58         num_7= hx.JC(-5);
    59         assertEquals(1,num_7);
    60         }
    61         catch(Exception e)
    62         {
    63             
    64         }
    65      }
    66     
    67     
    68 
    69 }
    HeXinCodeTest

     首先是对加减乘做了简单的单元测试,这三个运算在单元测试中是没出现什么问题的。

    截图:

     

     

     而到了除法和阶乘运算,除法是要考虑除数不能为零的,而阶乘的底数是不能小于零的。一开始,没有定义异常是不能通过单元测试的,如下图

    到这里。心想只能用异常处理了,但是,我把自定义异常处理的知识忘掉了,平时用的都是系统的异常,这就是这次作业的好处之一:我可以捡起我遗忘掉的知识。通过翻阅书本,自定义了两个异常处理的类。代码在上面;然后问题也就解决了。如图

    方法重载:由于时间原因,我们只对加法做了方法的重载。如图:

     

           心得和总结:这次作业的收获是对测试与封装更进一步的熟悉,而且温习了之前记得不是太清楚的编程知识,比如异常的处理以及自定义的异常,而而且现在觉得做单元测试是我们个项目的必经之路,做了单元测试基本上可以发现我们程序中bug。而这次作业是接着上次作业的第二个阶段做的,相信通过一个一个的阶段的走下去,自己会越来越熟悉,越来越接近程序猿的本领。

     

  • 相关阅读:
    C++模板的声明与实现分离 编译错误详解
    C语言中数据类型的隐式转换
    UNIX 高手的 10 个习惯
    linux 信号量
    引用与数组
    Linux 的变量命名规则
    .bash_profile和.bashrc的区别(如何设置生效
    URAL 1053 Pinocchio
    URAL 1040 Airline Company
    URAL 1045 Funny Game
  • 原文地址:https://www.cnblogs.com/ouqifeng/p/4488350.html
Copyright © 2020-2023  润新知