首页 > 代码库 > 第二次作业+105032014037

第二次作业+105032014037

1、测试帖链接:http://www.cnblogs.com/ypzeng/p/6600986.html

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

测试人员提出的问题为:对不符合数据的要求的数据应进行处理,不能任由程序出错而放任不过,应以更为优化的界面给予视觉上的舒适感,还有对与一下代码

Scanner scana=new Scanner(System.in);

int a = scana.nextInt();

Scanner scanb=new Scanner(System.in);

int b = scanb.nextInt();

Scanner scanc=new Scanner(System.in);

int c = scanc.nextInt();

应对 scana scanb scanc 进行关闭,对所占用的资源进行关闭。

解答:

(1)已对不符合数据进行处理,将输入定义为String类型,再进行转换为int型是否判断正确,正确方进行下一步。应该把这个小程序当成一个完整的应用来看待,运行程序时不在非人为的情况下发生崩溃。

(2)界面舒适感在改过代码后应该会有所提高,谢谢提醒。

(3)在新代码中scana、scanb、scanc不做关闭处理,因为这三个输入放在do···while()里,如果关闭了,因为没有键盘输入,程序将不断的进行case:“1”。当程序进行人为的退出后,show()将停止执行,系统会退出,所以不进行处理。出于eclipse提醒,添加 @SuppressWarnings("resource")在show()前,让它阻止这个提醒。鉴于学艺不精,可能这个回答不是很令人满意,请见谅。

 

3、修正后的代码清单

1 package TSort;
2 public class Client {
3     public static void main(String args[]) throws Exception{
4         new Menu();
5     }
6 }
 1 package TSort;
 2 import java.util.Scanner;
 3 public class Menu {
 4     private static Scanner in = new Scanner(System.in);
 5     public Menu() throws Exception
 6     {
 7         while(true){
 8             this.show();
 9         }
10     }
11     @SuppressWarnings("resource")
12     public void show() throws Exception{
13         
14         System.out.println("======三角形种类=====");
15         System.out.println("[1] 进行三角形类型判断");
16         System.out.println("[e] 退出。");
17         while (in.hasNext()) {
18         String i = in.nextLine();
19         switch(i){
20             case "1":{
21                 int i_a,i_b,i_c;
22                 System.out.println("请输入三角形的三条边:");        
23                 do {
24                     Scanner scana=new Scanner(System.in);             
25                     String a=scana.next();
26                     Scanner scanb=new Scanner(System.in); 
27                     String b=scanb.next();                
28                     Scanner scanc=new Scanner(System.in);
29                     String c=scanc.next();
30                     if(IsInteger.IsNum(a)&&IsInteger.IsNum(b)&&IsInteger.IsNum(c))
31                     {
32                          i_a = Integer.parseInt(a);
33                          i_b = Integer.parseInt(b);
34                          i_c = Integer.parseInt(c);
35                          System.out.println(Sort.triangle(i_a, i_b, i_c));
36                          break;
37                     }
38                     else{
39                         System.out.println("输入不是整数!请重请输入三角形的三条边:");
40                     }
41                 } while (true);    
42                 System.out.println("==========请继续选择===========");
43                 System.out.println("[1] 进行三角形类型判断");
44                 System.out.println("[e] 退出。");    
45                 break ;
46         }    
47             case "e":{
48                 System.exit(1) ;        // 系统退出
49                 break ;
50             }
51             default:{
52                 System.out.println("请选择正确的操作!") ;
53             }
54         }
55     }
56     }
57 }
 1 package TSort;
 2 public class IsInteger {
 3     public static boolean IsNum(String str)
 4      {
 5       if(str==null)
 6        {
 7          return false;
 8         }
 9       else{
10            try{
11             @SuppressWarnings("unused")
12             int num=Integer.valueOf(str);//把字符串强制转换为数字 
13             return true;//是数字,返回true
14             }catch (Exception e) {
15              return false;
16             }
17         }
18     }
19 }
 1 package TSort;
 2 public class Sort{
 3     static String t1="边的值不在范围内";
 4     static String t2="不构成三角形";
 5     static String t3="等边三角形";
 6     static String t4="等腰三角形";
 7     static String t5="直角三角形";
 8     static String t6="一般三角形";
 9     public static String triangle(int a,int b,int c){    
10         if(a<1 || a>100 ||b<1 || b>100|| c<1|| c>100)
11         {
12             return t1;
13         }
14         else if(a>=b+c ||b>=a+c||c>=a+b)
15         {
16             return t2;
17         }
18         else if(a==b &&b==c &&c==a){
19             return t3;
20         }
21         else if(a==b ||b==c ||c==a){
22             return t4;
23         }
24         else if(a*a+b*b==c*c ||b*b+c*c==a*a ||c*c+a*a==b*b){
25             return t5;
26         }
27         else {
28             return t6;
29         }
30     }
31 }

 

4、修正后心得体会

(1)做一个功能简单的程序,也要当成一个完整的应用,要考虑到程序在非人为情况下不出现闪退崩溃等情况;

(2)对于参数的声明定义要明确这个类型的范围(比如int最大最小是多少,如果超过又怎么处理);

(3)从Scanner中获取数据,要习惯进行处理,得到期望输入的类型再进行下一步功能实现;

(4)if()条件处理可以进行封装成一个方法,这样子复杂的条件判断能够单独进行,方便检查处理。

(5)对于编程开发人员可能只是为了完成这个功能,但是对于测试人员来说,功能只是程序正确的一个体现,所以如果不想让测试人员检查出更过错误,就要养成严谨的代码习惯,正确的处理数据,代码整洁,功能完善。

第二次作业+105032014037