第二次作业+105032014061
1.测试人员的测试帖链接:http://www.cnblogs.com/chen-dg/p/6602207.html
2.测试人员提出的问题、发现的缺陷:被测试代码能通过大部分判定覆盖与语句覆盖的测试,能判断值是否在范围内和是否构成三角形,判断构成为等腰三角形还是等边三角形,但不能判断是否为直角三角形,在输入的字符不为整数型时不能做出相应的提示。
代码优化意见:
(1)添加判断是否为直角三角形的语句,例如下列代码:
if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) {
System.out.println("可以组成直角三角形");
}
(2)在输入边值的代码区域添加try-catch语句,当输入为非法字符时会跳出提示,如“请确保输入的边为整数”。
3.修正后的代码清单:
import java.util.Scanner; public class triangle { private int a; private int b; private int c; public triangle(int a, int b, int c) { this.a = a; this.b = b; this.c = c; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (true) { System.out.println("请输入第一条边:");// 输入第1条边 int a = isNumber(scan.next()); System.out.println("请输入第二条边:");// 输入第2条边 int b = isNumber(scan.next()); System.out.println("请输入第三条边:");//// 输入第3条边 int c = isNumber(scan.next()); System.out.println(triangle.trangle(a, b, c));// 判断输入的能否构成三角形以及类型 System.out.println("-------------------"); } } public static String trangle(int a, int b, int c) { String s = null; if ((a < 1 || a > 100) || (b < 1 || b > 100) || (c < 1 || c > 100)) { s = "边的值不在范围内!"; } if (a < b + c && b < a + c && c < a + b) {// 两边之和大于第三边可构成三角形 if (a == b || a == c || b == c) {// 等腰三角形 if (a == b && b == c) {// 等边三角形 s = "可以组成等边三角形"; } else { s = "可以组成等腰三角形"; } } else if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) {//直角三角形 s="可以组成直角三角形"; } else s = "可以组成普通三角形"; } // 不能构成三角形 else{ s = "不能够组成三角形!"; } return s; } public static int isNumber(String num) { Scanner input = new Scanner(System.in); while (true) { if (!num.matches("^[0-9]*$")) { System.out.println("请确保输入的边是整数!"); num = input.next(); } else { return Integer.parseInt(num); } } } }
4.修改代码心得体会:
(1).按照测试人员,修改了代码,有的不是完全按照测试人员的意见,但是还是达到了测试人员的要求。
(2).经过此次的修改代码,我认识到了软件测试的重要性。
(3).要学会对测试人员提出的要求,修改自己的代码,同时也要认真阅读需求,尽量做到实现每个要求。