zoukankan      html  css  js  c++  java
  • 第二次作业+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)对于编程开发人员可能只是为了完成这个功能,但是对于测试人员来说,功能只是程序正确的一个体现,所以如果不想让测试人员检查出更过错误,就要养成严谨的代码习惯,正确的处理数据,代码整洁,功能完善。

  • 相关阅读:
    LeetCode: Number Complement
    LeetCode: Hamming Distance
    LeetCode: Sum of Left Leaves
    LeetCode: Ransom Note
    LeetCode: Minimum Moves to Equal Array Elements
    LeetCode: Linked List Random Node
    LeetCode: Product of Array Except Self
    LeetCode:Two Sum II
    LeetCode: Minimum Moves to Equal Array Elements II
    杂记 -- 时间段内应用程序调用次数限制
  • 原文地址:https://www.cnblogs.com/WuYeqian/p/6618858.html
Copyright © 2011-2022 走看看