第2次作业+105032014070
- 测试帖链接
http://www.cnblogs.com/lyz007/p/6605259.html
- 测试人员提出的问题、发现的缺陷
a.应该增加程序中的注释。
b.并且减少无用的分支判断,提高代码的可复用性。例如下段程序
int SameLengthNum(int a, int b, int c){
int count = 0;
if (a == b){
count++;
}
if (a == c){
count++;
}
if (b == c){
count++;
}
return count;
}
c.可以考虑使用trycatch块减少异常发生的可能性
- 修正后的代码清单
import java.util.Scanner; public class Distinguish { /** * * @param a 三角形边的数值 * @param b 三角形边的数值 * @param c 三角形边的数值 * @return 返回存在几对相等的边 */ private int SameLengthNum(int a,int b,int c){ int count = 0; if(a==b){ count++;//每存在一对相等的边计数加一 } if(a==c){ count++; } if(b==c){ count++; } return count; } /** * * @param a 三角形边的数值 * @param b 三角形边的数值 * @param c 三角形边的数值 * @return 返回三角形的类型 */ private String Triangle(int a,int b,int c){ String ch = null; if(!(1<=a&&a<=100) || !(1<=b&&b<=100) || !(1<=c&&c<=100)){ return ch="边的值不在范围内"; } if(!(a<(b+c)) || !(b<(a+c)) || !(c<(a+b))){ return ch="不构成三角形"; } switch(SameLengthNum( a, b, c)){//调用函数判断有几对边相等 case 0:{ if((a*a+b*b)==(c*c) || (a*a+c*c)==(b*b) || (c*c+b*b)==(a*a)){ ch="直角三角形"; break; } else{ ch="一般三角形"; break; } }//没有相等边 case 1: ch="等腰三角形";break;//一对边相等 case 3: ch="等边三角形";break;//三对边相等 } return ch; } /** * * @param in 输入流 */ private void Input(Scanner in){ String input = null; System.out.println("请输入三角形的三条边(格式:a,b,c),当输入多余数据时只处理前三个:"); input = in.nextLine(); String[] value = input.split(",");//以“,”分割字符串 if(!Validation(value)){//调用验证函数 System.out.println("输入数据非法。"); } else{ int a = Integer.valueOf(value[0]).intValue();//已验证过不再进行异常处理 int b = Integer.valueOf(value[1]).intValue(); int c = Integer.valueOf(value[2]).intValue(); String ch = Triangle(a,b,c);//调用判别函数 System.out.println("测算结果:"+ch); } } /** * * @param value String型三角形边长数据数组 * @return false:存在不是整数的值或获取的数据不足 true:验证通过 */ private boolean Validation(String[] value){ if(value.length<3){//没有三个数据 return false; } try { for(int i=0;i<3;i++){ int b = Integer.valueOf(value[i]).intValue(); } } catch (NumberFormatException e){//不能转换成整型 return false; } return true; } /** * 入口 */ public void Menu(){ boolean flag = true; while(flag){ System.out.println("功能列表:\n\t1.测算三角形类型\n\t0.退出\n选择您所需要的功能:"); String select = null; Scanner in = new Scanner(System.in); select = in.nextLine(); if(!select.equals("1") && !select.equals("0")){ System.out.println("请输入1或0选择您所需要的功能。"); } else{ switch(select){ case "0": { flag = false; System.out.println("感谢您的使用,再见!"); in.close(); break; } case "1": Input(in);break; } } } } public static void main(String[] args) { new Distinguish().Menu(); } }
- 修正后心得体会:
根据测试人员的建议添加了注释。
我认为加写一个相等边对数判别有利于测试人员的测试,并不算无用分支。
在C语言编程并不习惯使用try catch异常处理机制,此次在使用java语言编程便使用了异常处理机制,但并不多。
通过测试人员的测试与提醒,能够更好的完善代码,以及改掉不良的编码习惯,软件测试的重要性不言而喻。