练习5.2更新——继5.1的追加更新完善
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ppackage; 2 import static org.junit.Assert.*; 3 4 import java.math.BigDecimal; 5 6 import org.junit.Test; 7 8 9 public class Rank { 10 11 @Test 12 public void testrank() { 13 CalcuteRank c=new CalcuteRank(); 14 try{ 15 BigDecimal answer=c.rank("5"); 16 assertEquals(120,answer.intValue()); 17 } 18 catch(FsException e) 19 { 20 System.out.println(e.getMessage()); 21 } 22 } 23 public void testfs() { 24 CalcuteRank c=new CalcuteRank(); 25 try{ 26 BigDecimal answer=c.rank("-5"); 27 } 28 catch(FsException e) 29 { 30 System.out.println(e.getMessage()); 31 } 32 } 33 public void testff() { 34 CalcuteRank c=new CalcuteRank(); 35 try{ 36 BigDecimal answer=c.rank("a"); 37 assertEquals(120,answer.intValue()); 38 } 39 catch(NumberFormatException e) 40 { 41 System.out.println(e.getMessage()); 42 } 43 catch(FsException e) 44 { 45 System.out.println(e.getMessage()); 46 } 47 } 48 49 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ppackage; 2 3 import java.math.BigDecimal; 4 import java.util.Random; 5 6 public class CalcuteRank { 7 BigDecimal rank(String a) throws FsException 8 { 9 int i,j=1,l; 10 BigDecimal k= new BigDecimal(1); 11 String []v=new String [10]; 12 if(Integer.parseInt(a)<0) 13 { 14 throw new FsException("您输入的是"+a+",规定阶乘数不能为负数!"); 15 } 16 if(Integer.parseInt(a)==0) 17 { 18 k= new BigDecimal(1); 19 System.out.print(a+"!="); 20 System.out.print(0+"\n"); 21 } 22 else 23 { 24 for(l=0;l<10;l++) 25 { 26 v[l]=""; 27 } 28 l=0; 29 for(int f=0;f<1;f++) 30 { 31 BigDecimal.valueOf(j); 32 v[l]=a; 33 v[l]+="!"; 34 System.out.print(a+"!="); 35 do 36 { 37 k=k.multiply(BigDecimal.valueOf(j)); 38 j++; 39 40 }while(j<=Integer.parseInt(a)); 41 System.out.print(k+"\n"); 42 l++;v[l]=String.valueOf(k);l++; 43 j=1; 44 } 45 } 46 return k; 47 } 48 public static void main(String[] args) { 49 CalcuteRank aa=new CalcuteRank(); 50 String s="5"; 51 try{ 52 aa.rank(s); 53 } 54 catch(NumberFormatException e) 55 { 56 System.out.println("您输入的是"+s+','+"规不能输入数字以外的非法字符!"); 57 } 58 catch(FsException e) 59 { 60 System.out.println(e.getMessage()); 61 } 62 } 63 64 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ppackage; 2 public class FsException extends Exception{ 3 public FsException(String mes) 4 { 5 super(mes); 6 } 7 }
以上3条程序代码分别是:
1、单元测试程序;
2、计算阶乘功能程序;
3、异常处理程序;
由于在练习5.1中已经完成了四则运算的大部分功能,所以在本次练习中,就试着在练习5.1的基础上,追加了阶乘功能,并且对阶乘功能进行封装,测试等等。
-(1)黑盒子测试
测试用例输入条件 | 输入条件 | 有效等价类 | 无效等价类 |
输入有效性判断 | 5 | 5 | |
输入错误负数 | -5 | l例如:5 | -5 |
输入错误字符 | a | 例如:5 | a |
测试对象 | 测试说明 | 测试数据 | 测试结果 |
计算范围 | 能计算的大小(<=100) | 100 | 93326215... |
(2)白盒子测试
测试用例 | 用例说明 | 通过途径 | 实际结果 |
负数处理 | 输入(-5) | Line23-32 | 抛出异常并提示 |
非法字符处理 | 输入(a) | Line33-47 | 抛出异常并提示 |
结果正确性处理 | 输入(5) | Line12-22 | 120 |
(3)异常处理
异常说明 | 异常用例 | 异常反馈 | |
fsException |
CalcuteRank aa=new CalcuteRank(); |
您输入的是-5,规定阶乘数不能为负数! | |
NumberFormatException | CalcuteRank aa=new CalcuteRank(); String s="a"; aa.rank(s); |
您输入的是a,规不能输入数字以外的非法字符! | |
本次实验代码及其测试结果截图
我们SsssB团队工作照:
本次工作照就不在我的博客中上传啦,如果需要观看,就欢迎进入我团队另一位小伙伴的博客吧,她为自己“带盐”:http://www.cnblogs.com/mikky/
最后总结:
因为有了第一次实验作为铺垫,所以这次实验做起来就没有了第一那么困难,感觉很多地方都能很容易的上手,同时也在第一次实验的基础上加以了完善了追加了一部分功能,及其异常处理。不过我们的实验还是存在有许多不足之处,我们团队会再接下更加努力,一点点改进完善,让我们的作业做得更加好。