第二次作业+105032014160
1.测试帖链接:
http://www.cnblogs.com/ypzeng/p/6530638.html
2.测试人员提出的问题、发现的缺陷
等腰三角形的判断不能通过。当a,b相等且a大于c或b,c相等且a<c时,程序将判断三角形为一般三角形,这显然是错误的。当输入浮点数,字符等类型数据时程序奔溃。
(1)对a,b,c三条边大小的排序意义不大,对等腰三角形的判断代码需要改进;
(2)可以增加对输入类型的判断,以免输入浮点数,字符等类型数据时程序奔溃;
(3)可以加入一个while(true)循环,以便测试多组数据;
(4)对变量的命名最好带有含义。
3.修正后的代码
public class GetData { public static char triangle(int a, int b, int c) { if(a<=b+c ||b<=a+c || c<=a+b) { if ((a==b)&& (b==c)&&(c==a)) { return '1'; }else if ((a==b) || (b==c) || (a==c)) { return '2'; }else if (a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b) { return '3'; }else { return '4'; } }else { return '5'; } } } import java.util.Scanner; public class Main { static String equaltrianger = "等边三角形"; static String isotrianger = "等腰三角形"; static String comtrianger = "一般三角形"; static String rigtrianger = "直角三角形"; static String sidewrong = "边值不存在"; static String noconstruct = "不构成三角形"; public static void main(String[] args) { char resulet = ' '; System.out.println(" 1 进行三角形判断操作"); System.out.println(" x 退出程序"); while(true) { Scanner sc = new Scanner(System.in); String temp =sc.nextLine(); switch (temp) { case "1":{ System.out.println("请输入三角形的三条边:"); try { Scanner sca = new Scanner(System.in); int a = sca.nextInt(); Scanner scb = new Scanner(System.in); int b = scb.nextInt(); Scanner scc = new Scanner(System.in); int c = scc.nextInt(); if (a<1 || a>100 || b<1 || b>100 || c<1 || c>100) { System.out.println("边值不存在!"); }else { resulet = GetData.triangle(a, b, c); if (resulet == '1') { System.out.println(equaltrianger); }else if (resulet == '2') { System.out.println(isotrianger); }else if (resulet == '3') { System.out.println(rigtrianger); }else if (resulet == '4') { System.out.println(comtrianger); }else { System.out.println(noconstruct); } } System.out.println(" 1 进行三角形判断操作"); System.out.println(" x 退出程序"); break; } catch (Exception e) { System.out.println("请输入正确的边值!"); System.out.println(" 1 进行三角形判断操作"); System.out.println(" x 退出程序"); break; } } case "x": System.exit(1); default: System.out.println("请选择正确的操作!") ; } } } }
4.修正后的体会
在这次代码的修改中,针对测试人员提出的要求,对代码进行重新修改,使得测试人员所提出的问题得到改正,
对非整型的数据进行异常的捕获,对边判断进行了加强及简化,是代码更为简练优化。同时在对变量的命名中使
变量见其名而知其意,同时加入while(true)语句,使得测试可以多次进行,方便测试人员进行测试。