码迷,mamicode.com
首页 > 其他好文 > 详细

练习5.1更新——四则运算 测试与封装

时间:2015-04-30 17:42:17      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
  1 package ppackage;
  2 import java.util.Random;
  3 import java.util.Scanner;
  4 import java.util.regex.Pattern;
  5 
  6 
  7 public class Colc {
  8     public int sighfh,fuhaosl;
  9     public float sighsz1,sighsz2,answer2,sum2=0,sum3=0;
 10     public float []sighsz=new float[30];
 11     public String []fuhaoq={"+","-","*","/"};
 12     public String []fuhao=new String[30];
 13     public String fuhao2,answer1,s;
 14     public String []zhengshi=new String[200];
 15     public String []first=new String[100];
 16     public String []second=new String[100];
 17     public String []three=new String[100];
 18     public String temp1="null";
 19     public int i=0,jia=0,jian=0,q=0,x=0,chen=0,chu=0,temp2,j=0,c,op=0;
 20     public static float sum=0;
 21     
 22      String Colc(String x)
 23      {
 24         String[]xx=new String[200];
 25         for(c=0;c<10;c++)
 26             xx[c]="";
 27         c=0;
 28         for(int x1=0;x1<Integer.parseInt(x);x1++)
 29         {
 30         Random z=new Random();
 31         sighsz1=z.nextFloat()*10;
 32 
 33         int k=0;
 34         sighsz1=(float)(Math.round(sighsz1*100))/100;
 35 
 36         zhengshi[k]=String.valueOf(sighsz1);
 37 
 38         fuhaosl=z.nextInt(3)+1;
 39     
 40 
 41         for(i=1;i<=fuhaosl;i++)
 42         {                                                                    
 43             sighfh=z.nextInt(4);
 44 
 45             switch(sighfh)
 46             {
 47             case 0:zhengshi[k]+="\t+\t";sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 48             zhengshi[k]+=String.valueOf(sighsz[k]);
 49 
 50             jia++;
 51 
 52             break;
 53             case 1:zhengshi[k]+="\t-\t";
 54             sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 55             zhengshi[k]+=String.valueOf(sighsz[k]);
 56 
 57             jian++;
 58             break;
 59             case 2:zhengshi[k]+="\t*\t";
 60             sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 61             zhengshi[k]+=String.valueOf(sighsz[k]);
 62 
 63             chen++;
 64             break;
 65             case 3:zhengshi[k]+="\t/\t";
 66             sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 67             zhengshi[k]+=String.valueOf(sighsz[k]);
 68 
 69             chu++;
 70             break;
 71 
 72             }
 73 
 74         }
 75         zhengshi[k]+="\t=\t";
 76         
 77         String temp="";
 78     
 79 
 80         System.out.printf("%s",zhengshi[k]);
 81         String []first=new String[200];
 82         String []second=new String[200];
 83 
 84         String[] zhengshi1=new String[200];
 85         int q=0,i1=0,i2=0,j=0;
 86         i=0;
 87 
 88         temp = zhengshi[k];
 89     
 90         zhengshi1= temp.trim().split("\t");
 91         while(op<=fuhaosl*2+1)
 92         {
 93             xx[c]+=zhengshi1[op];
 94     
 95             op++;
 96         }
 97         
 98         int y=0;
 99         while(zhengshi1[y]==null)
100         {
101             if(zhengshi1[y].equals("/"))
102             {
103                 while(Float.parseFloat(zhengshi1[y+1])/1==0)
104                 {
105                     zhengshi1[y+1]=String.valueOf((float)(Math.round(sighsz1*100))/100);
106                 }
107             }
108             y++;
109         }
110         
111         i=0;j=0;k=0;
112         while(zhengshi1[i].equals("=")==false )
113         {
114             
115             
116             try
117             {
118                 if(Float.parseFloat(zhengshi1[i])>=0 && Float.parseFloat(zhengshi1[i])<=100)
119                 {
120                     first[j]=zhengshi1[i];
121                     j++;i++;
122                 }
123             }
124             catch(NumberFormatException E)
125             {
126                 if(second[0]==null)
127                 {
128                     second[k]=zhengshi1[i];
129         
130                     k++;i++;
131                 }
132                 else
133                 {
134                 
135                     if(compare(second[k-1],zhengshi1[i],first))
136                     {
137         
138                             if(first[k].equals(null))
139                             {
140                                 second[k]=zhengshi1[i];
141                                 k++;i++;
142                             }
143                             else
144                             {
145                                 if(second[k-1].equals("+"))
146                                 {
147                                     sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
148                         
149                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
150             
151                                     j--;i++;
152                                 }
153                                 else if(second[k-1].equals("-"))
154                                 {
155                                     sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
156     
157                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
158 
159                                     j--;i++;
160                                 }
161                                 else if(second[k-1].equals("*"))
162                                 {
163                                     sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
164 
165                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
166 
167                                     j--;i++;
168                                 }
169                                 else if(second[k-1].equals("/"))
170                                 {
171                                     sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
172         
173                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
174 
175                                     j--;i++;
176                                 }
177                                     
178                             }
179                         }
180                         
181                     
182                     else
183                     {
184                         
185                         second[k]=zhengshi1[i];
186 
187                         
188                         i++;k++;
189                         
190                     }
191                     
192                 }
193             }
194     
195             
196 
197 
198         }
199         
200     
201             
202             while(second[0]!=null)
203             {
204 
205                 if(second[k-1].equals("+"))
206                 {
207                     sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
208     
209                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
210                     j--;k=k-1;i++;
211         
212                 }
213                 else if(second[k-1].equals("-"))
214                 {
215                     sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
216 
217                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
218                     j--;k=k-1;i++;
219                     
220         
221                 }
222                 else if(second[k-1].equals("*"))
223                 {
224                     sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
225         
226                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
227                     j--;k=k-1;i++;
228                     
229 
230                 }
231                 else if(second[k-1].equals("/"))
232                 {
233                     sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
234 
235                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
236                     j--;k=k-1;i++;
237 
238                 }
239                 
240             }
241             sum=(float)(Math.round(sum*100))/100;
242             System.out.print("\n答案为:"+sum+"\t\n");
243             c++;
244             xx[c]=String.valueOf(sum);c++;op=0;
245         }
246         int qw=0;
247         return String.valueOf(sum);
248 
249         
250         
251     }
252     boolean compare(String x1,String x2,String x3[]) //true 出栈,flase 进栈
253     {
254         int i,j,k;
255         if(x2.equals("+") || x2.equals("-"))
256             return true;
257         else
258         {
259             if(x1.equals("*") || x1.equals("/"))
260             {
261                 return true;
262             }
263             else
264             {
265                 return false;
266             }
267         }
268     }
269     static String certain(String ts)
270     {
271         Pattern pattern = Pattern.compile("[0-9]*");
272         String ts1=ts;
273         if(pattern.matcher(ts1).matches())
274         {
275             return "true";
276         }
277         else
278         {
279             System.out.print("输入的数值有误\n请重新输入:");
280             return "false";
281         }
282         
283     }
284     public static void main(String[]args)
285     {
286         Scanner in =new Scanner(System.in);
287         String panding;
288         String numm;
289         System.out.print("请输入题目数量:");
290         do
291         {
292             numm=in.next();
293             panding=certain(numm);
294         }while(panding.equals("false"));
295         for(int oo=1;oo<=Integer.parseInt(numm);oo++)
296         {
297             Colc aa=new Colc();
298             String sum2=aa.Colc("1");
299             System.out.print("输入答案:");
300             String an=in.next();
301             if(an.equals(sum2))
302             {
303                 System.out.print("√\n");
304             }
305             else
306             {
307                 System.out.print("×\n");
308             }
309         }
310         
311     }
312 }
Colc
技术分享
  1 package ppackage;
  2 
  3 public class Calcute {
  4     public int sighfh,fuhaosl;
  5     public float sighsz1,sighsz2,answer2,sum2=0,sum3=0;
  6     public float []sighsz=new float[30];
  7     public String []fuhaoq={"+","-","*","/"};
  8     public String []fuhao=new String[30];
  9     public String fuhao2,answer1,s;
 10     public String []zhengshi=new String[200];
 11     public String []first=new String[100];
 12     public String []second=new String[100];
 13     public String []three=new String[100];
 14     public String temp1="null";
 15     public int i=0,jia=0,jian=0,q=0,x=0,chen=0,chu=0,temp2,j=0,c,op=0,k=0;
 16     public float sum=0;
 17     float Calcute(char oop,String []data)
 18     {
 19         String[]xx=new String[200];
 20         for(c=0;c<10;c++)
 21             xx[c]="";
 22         if(data[1].equals("0")) throw new ArithmeticException();
 23         zhengshi[k]=data[0]+"\t"+oop+"\t"+data[1];
 24         zhengshi[k]+="\t=\t";
 25         String temp="";
 26         System.out.printf("%s",zhengshi[k]);
 27         String []first=new String[200];
 28         String []second=new String[200];
 29 
 30         String[] zhengshi1=new String[200];
 31         int q=0,i1=0,i2=0,j=0;
 32         i=0;
 33 
 34         temp = zhengshi[k];
 35         zhengshi1= temp.trim().split("\t");
 36         while(op<=1+1)
 37         {
 38             xx[c]+=zhengshi1[op];
 39             op++;
 40         }
 41 
 42         int y=0;
 43         while(zhengshi1[y]==null)
 44         {
 45             if(zhengshi1[y].equals("/"))
 46             {
 47                 while(Float.parseFloat(zhengshi1[y+1])/1==0)
 48                 {
 49                     zhengshi1[y+1]=String.valueOf((float)(Math.round(sighsz1*100))/100);
 50                 }
 51             }
 52             y++;
 53         }
 54 
 55         i=0;j=0;k=0;
 56         while(zhengshi1[i].equals("=")==false )
 57         {
 58             try
 59             {
 60                 if(Float.parseFloat(zhengshi1[i])>=0 && Float.parseFloat(zhengshi1[i])<=100)
 61                 {
 62                     first[j]=zhengshi1[i];
 63                     j++;i++;
 64                 }
 65             }
 66             catch(NumberFormatException E)
 67             {
 68                 if(second[0]==null)
 69                 {
 70                     second[k]=zhengshi1[i];
 71                     k++;i++;
 72                 }
 73                 else
 74                 {
 75 
 76                     if(compare(second[k-1],zhengshi1[i],first))
 77                     {
 78 
 79                         if(first[k].equals(null))
 80                         {
 81                             second[k]=zhengshi1[i];
 82                             k++;i++;
 83                         }
 84                         else
 85                         {
 86                             if(second[k-1].equals("+"))
 87                             {
 88                                 sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
 89                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
 90                                 j--;i++;
 91                             }
 92                             else if(second[k-1].equals("-"))
 93                             {
 94                                 sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
 95                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
 96                                 //System.out.print("\n答案暂时是:"+sum+"\n");
 97                                 j--;i++;
 98                             }
 99                             else if(second[k-1].equals("*"))
100                             {
101                                 sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
102                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
103                                 //System.out.print("\n答案暂时是:"+sum+"\n");
104                                 j--;i++;
105                             }
106                             else if(second[k-1].equals("/"))
107                             {
108                                 sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
109                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
110                                 j--;i++;
111                             }
112 
113                         }
114                     }
115 
116 
117                     else
118                     {
119 
120                         second[k]=zhengshi1[i];
121 
122                         i++;k++;
123 
124                     }
125 
126                 }
127             }
128 
129 
130 
131 
132         }
133 
134         while(second[0]!=null)
135         {
136 
137             if(second[k-1].equals("+"))
138             {
139                 sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
140 
141                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
142                 j--;k=k-1;i++;
143             }
144             else if(second[k-1].equals("-"))
145             {
146                 sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
147 
148                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
149                 j--;k=k-1;i++;
150 
151 
152             }
153             else if(second[k-1].equals("*"))
154             {
155                 sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
156 
157                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
158                 j--;k=k-1;i++;
159 
160 
161             }
162             else if(second[k-1].equals("/"))
163             {
164                 sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
165 
166                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
167                 j--;k=k-1;i++;
168 
169             }
170 
171         }
172         sum=(float)(Math.round(sum*100))/100;
173         System.out.print("\n答案为:"+sum+"\t\n");
174         c++;
175         xx[c]=String.valueOf(sum);c++;op=0;
176         return sum;
177     }
178     int qw=0;
179 
180 
181 
182     boolean compare(String x1,String x2,String x3[]) //true 出栈,flase 进栈
183     {
184         int i,j,k;
185         if(x2.equals("+") || x2.equals("-"))
186             return true;
187         else
188         {
189             if(x1.equals("*") || x1.equals("/"))
190             {
191                 return true;
192             }
193             else
194             {
195                 return false;
196             }
197         }
198     }
199 
200     public static void main(String[] args) {
201 
202         char oop=‘/‘;
203         String[]data={"8.2","2"};
204         Calcute aa=new Calcute();
205         aa.Calcute(oop, data);
206     }
207 
208 }
Calcute
技术分享
 1 package ppackage;
 2 
 3 import static org.junit.Assert.*;
 4 
 5 import org.junit.Test;
 6 
 7 public class CalcuteTest {
 8 
 9     @Test
10     public void testJia() {
11         String[]data={"10.0","5.5"};
12         char oop=‘+‘;
13         Calcute c=new Calcute();
14         float answer=c.Calcute(oop, data);
15         System.out.println(answer);
16         assertEquals(15.5,answer,100);
17     }
18     @Test
19     public void testJian() {
20         String[]data={"10.0","5.0"};
21         char oop=‘-‘;
22         Calcute c=new Calcute();
23         //c.Calcute(oop, data);
24         float answer=c.Calcute(oop, data);
25         System.out.println(answer);
26         assertEquals(5,answer,100);
27     }
28     @Test
29     public void testChen() {
30         String[]data={"10.0","5.0"};
31         char oop=‘*‘;
32         Calcute c=new Calcute();
33         float answer=c.Calcute(oop, data);
34         System.out.println(answer);
35         assertEquals(50.00,answer,100);
36     }
37     @Test
38     public void testChu() {
39         String[]data={"10.0","5.0"};
40         char oop=‘/‘;
41         Calcute c=new Calcute();
42         float answer=c.Calcute(oop, data);
43         System.out.println(answer);
44         assertEquals(2,answer,100);
45     }
46     @Test(expected = ArithmeticException.class)
47     public void testException() {
48         String[]data={"10.0","0"};
49         char oop=‘/‘;
50         Calcute c=new Calcute();
51         float answer=c.Calcute(oop, data);
52     }
53 
54 }
CalcuteTest

以上3条程序代码分别是:

1、主程序;

2、计算功能模块程序;

3、单元测试程序;

-(1)黑盒子测试.这个测试主要就是以用户角度测试代码的功能与用途:

 

测试用例

输入条件

有效等价类

无效等价类

代码途径

题目有效性判断

只允许数字

10

A

Line269-283

输入字符的有效性判断

(10,2,A)

10,2

A

 

题目数量

小于等于100

1-100

>100

 

参数类型

String[],char

{“100”,”200”},+,/

‘100’,’100’

 

答案类型

匹配

正确√

错误×

 

 

 

 

 

 

 

 

 

 

 

 

 

测试对象

测试说明

测试数据

测试结果

题目数量

输入非法数据

Abc

输入不正确,请从新输入:

题目数量

输入数据过大

101

抛出异常,提示错误

加减乘除计算

输入符号有误

10++20

提示输入有误

加减乘除计算

输入数值有误

10a+20bd

提示输入有误

计算范围

精确度

12.0和12和12.00

正确

 

(2)白盒子测试。对软件的过程性细节做细致的检查。

测试用例

用例说明

通过途径

实际结果

加法处理

10.0+5.5

Line9-17

5.5

减法处理

10.0-5.5

Line18-27

4.5

乘法处理

10.0*5.0

Line28-37

50.0

除法处理

10.0/5.0

Line37-45

2.0

除零处理

10.0/0

Line46-52

抛出异常

代码覆盖率

100%

100%

100%

 

 

 

 

 代码主要来源于测试类程序:由于截屏的屏幕的原因,无法全部截图下来,请参考上面的折叠代码

技术分享

主要测试结果,及其分析截图:

技术分享技术分享

我们团队的工作照片:

技术分享

最后总结:

本次实验总体而言,对于我本人来说,难度着实很大,因为是第一次接触这一类测试(单元测试,黑白盒测试),一开始我们并不明白这一些测试到底什么情况,做起来也非常棘手,一度让我和我的小伙伴在进度上停止下来了,总体上我个人感觉对本次实验,不是很满意,自己还有需要需要改进的地方,还需要我和我的小伙伴多下点功夫才行。同时需要说明一点,由于本次实验,老师说需要交换队友,我们团队一开始是尝试过交换队友的,但是在前期出现了许多的沟通障碍,因为彼此间对程序的理解程度存在障碍,所以后面我们决定本次实验,我和我的小伙伴一直觉得,让我和我上一位队友一起带着本次实验新的小伙伴一起工作,初步先让新的成员先熟悉代码。然后再逐步进行下面的工作。不管怎样,经过本次实验我们都发现了许多问题,还存在许多地方需要改进。所以我们团队会继续努力,力争在接下来的实验能完成的更好。

本次实验,与我并肩作战的小伙伴是:铭琪姐姐:http://www.cnblogs.com/mikky/

练习5.1更新——四则运算 测试与封装

标签:

原文地址:http://www.cnblogs.com/kevinkeke/p/4469349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!