第二次作业+105032014142
1. 测试帖链接
测试帖链接:http://www.cnblogs.com/lucerner/p/6583142.html
第一次开发源代码:http://www.cnblogs.com/wangjiao0-0/p/6531421.html
2. 测试人员提出的问题、发现的缺陷
缺陷:无
建议:
(1)在每输入一个值的时候能够进行判断,这样就可以避免多次输入无用值。
(2)题目要求输入的内容为整数,而 isRightTriangle(double a, double b, double c )这个函数的参数为double类型,建议能够统一为int类型
3. 修正后的代码清单
1 import java.util.Scanner; 2 3 public class Triangle { 4 public static String triangle(int a, int b, int c) { 5 if (!((1 <= a && a <= 100) && (1 <= b && b <= 100) && (1 <= c && c <= 100))) 6 return "边的值不在范围内!"; 7 if (!((a < b + c) && (b < a + c) && (c < a + b))) 8 return "不构成三角形"; 9 if ((a == b) || (b == c) || (c == a)) 10 if (a == b && b == c) 11 return "等边三角形"; 12 else 13 return "等腰三角形"; 14 else { 15 if ((a * a == b * b + c * c) || (b * b == a * a + c * c) || (c * c == a * a + b * b)) 16 return "直角三角形"; 17 return "一般三角形"; 18 } 19 } 20 21 public static void main(String[] args) { 22 String input = ""; 23 int a, b, c; 24 Scanner scan = new Scanner(System.in); 25 while (true) { 26 System.out.print("请输入三角形的三条边"); 27 input = scan.nextLine().trim(); 28 String[] buf = input.split("[\\s+,,]"); 29 if (input.equals("")) 30 continue; 31 else if (input.equalsIgnoreCase("return"))//退出程序 32 break; 33 else if (buf.length == 3) { 34 try { 35 a = Integer.valueOf(buf[0]); 36 b = Integer.valueOf(buf[1]); 37 c = Integer.valueOf(buf[2]); 38 System.out.println(triangle(a, b, c)); 39 } catch (NumberFormatException e) { 40 System.out.println("请输入整数"); 41 } 42 } else//长度错误 43 System.out.println("格式错误"); 44 } 45 System.out.println("谢谢使用,再见~"); 46 scan.close(); 47 } 48 }
4. 修正后心得体会
(1)变更:
a).用简洁易懂的代码代替isRightTriangle(double a, double b, double c )这个函数,增强代码的可读性。
b).改造if else判断降低了代码层级,缩小了catch范围,捕获异常更加精准,将变量提到循环体外部提高了效率,改进了退出方式,改进为多种拆分字符,使程序输入更加方便。
(2)出现缺陷的原因:
无缺陷。
(3)学习心得:
a).一个好的程序应该有一个体验良好的界面方便用户输入。
b).应当认真研读客户的需求,不能遗漏。
c).测试人员和开发人员应该做好沟通协调的工作。
d).使用尽量简洁易懂的代码代替复杂冗长的代码
e).降低代码的层级方便阅读。