作业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。而这次作业是接着上次作业的第二个阶段做的,相信通过一个一个的阶段的走下去,自己会越来越熟悉,越来越接近程序猿的本领。

 

原文地址:https://www.cnblogs.com/ouqifeng/p/4488350.html