第二次作业+105032014166

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二次作业+105032014166相关的知识,希望对你有一定的参考价值。

 

  1. 测试帖链接

    (1)测试帖链接:http://www.cnblogs.com/chenyp1996/p/6601688.html

      (2)第一次开发源代码:http://www.cnblogs.com/zhen-firstblog/p/6532695.html

 

  2. 测试人员提出的问题、发现的缺陷

    缺陷:

      

    建议:

      (1)使用while循环,方便用户多次输入

      (2)当用户无输入时,提醒用户输入

      (3)使用nextLine代替next以便全盘接收

      (4)使用正则表达式替换isisDigit方法更高效

 

  3. 修正后的代码清单

  

 1 import java.util.Scanner;
 2 
 3 public class JudgeTriangle {
 4 
 5     public static void main(String[] args) {
 6         int a=0,b=0,c=0;
 7         String d,e,f;
 8         int isContinue = 1;
 9         Scanner scanner = new Scanner(System.in);
10         do{
11             System.out.println("请输入三角形的三条边:");
12                     
13             do{
14                 d = scanner.next();
15                 e = scanner.next();
16                 f = scanner.next();
17                 
18                 //用正则表达式判断
19                  if(d.matches("[0-9]+") && e.matches("[0-9]+") && f.matches("[0-9]+"))
20                 //if(isNumber(d) && isNumber(e) && isNumber(f))
21                 {
22                     a = Integer.parseInt(d);
23                     b = Integer.parseInt(e);
24                     c = Integer.parseInt(f);
25                     break;
26                 }
27                 else
28                 {
29                     System.out.println("格式错误!请重新输入三角形的三条边:");
30                 }
31             }while(true);
32             System.out.println(triangle(a,b,c));
33             
34             //判断是否结束程序
35             System.out.println("是(1)否(0)继续?");
36             isContinue = scanner.nextInt();
37         }while(isContinue == 1);
38         
39         
40         scanner.close();
41 
42     }
43     
44 //    //判断是否是整数
45 //    public static boolean isNumber(String s)
46 //    {
47 //        if(s==null)
48 //        {
49 //            return false;
50 //        }
51 //        for(int i = 0; i < s.length(); i++)
52 //        {
53 //            if(Character.isDigit(s.charAt(i)) == false)
54 //            {
55 //                return false;
56 //            }           
57 //        }
58 //        return true;
59 //    }
60     
61   //判断三角形
62     public static String triangle(int a, int b, int c)
63     {
64         String result; 
65         
66         if(a<1 || a>100 || b<1 || b>100 || c<1 || c>100)
67         {
68             result = "边的值不在范围内!";        
69         }
70         else if(a >= b+c || b >= a+c || c >= a+b)
71         {
72             result = "不构成三角形!";
73         }
74         else if(a==b && b==c)
75         {
76             result = "等边三角形"; 
77         }
78         //else if((a == b && b != c) || (a == c && b!= c) || (b == c && a != b))
79         else if((a-b)*(a-c)*(b-c)==0)
80         {
81             result = "等腰三角形"; 
82         }
83         else if(a*a + b*b == c*c || a*a + c*c == b*b || c*c + b*b == a*a)
84         {
85             result = "直角三角形"; 
86         }
87         else
88         {
89             result = "一般三角形";
90         } 
91          
92          return result;
93     }
94 
95 }

  

  4. 修正后心得体会:

  (1)变更:

    采纳测试员的第1条与第4条建议:1)加入while循环并能控制结束,使能测试多个三角形;2)将原来判断是否是整数方法改成用正则表达式判断,简化了大量的代码

  (2)出现缺陷的原因:

    代码只能测试前三个输入,若有多余数据,只会测试前三个数据是否正确,而不管同一行代码中的后续输入数据。测试人员的缺陷列表中第三个数据以空格隔开已属于第四个输入数据。经过思考,决定不采纳测试人员的第3条针对这个问题的建议,因为我觉得一般输入都是以空格或回车键分割,若采纳测试人员的意见,则只能以回车键分割,但是保留源代码的话,既保留空格分割,输入回车键则有三个数据也同样会输出结果,并无出现错误,若输入多个数据,程序也不会异常中断,只是默认只判断前三个数据是否三角形的三条边。所以我并不认为那是缺陷。对于测试人员的第2条建议,我觉得没有必要,因为程序会提示格式错误。

     (3)学习心得:

    测试人员的确有必要了解一些开发,能对源代码除了bug外提出一些改进建议,但是测试人员与开发人员思考会有所差异,测试人员测试并不一定就是正确的,既需要开发人员了解一些测试,也需要测试人员与开发人员多沟通并思考修改程序的必要性。

 

以上是关于第二次作业+105032014166的主要内容,如果未能解决你的问题,请参考以下文章

第1次作业+105032014166

软件工程(2018)第二次结对作业

第3次作业+105032014166

第二次作业

第二次在对话框中膨胀片段时出错

第二次作业电梯编程题测试结果