第二次作业+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)语句,使得测试可以多次进行,方便测试人员进行测试。

posted on 2017-03-27 13:26  曾元鹏  阅读(209)  评论(0编辑  收藏  举报

导航