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

转载于:https://www.cnblogs.com/WuYeqian/p/6618858.html

第二次作业+105032014037相关推荐

  1. 丁贵才130702010042第二次作业

    第二次作业 2.9 设有如下语句,请用相应的谓词公式分别把它们表示出来: (1)有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花有喜欢梅花. 解:定义谓词 P(x):x是人 L(x,y):x喜欢y y ...

  2. 20189317 《网络攻防技术》 第二周作业

    一.黑客信息 (1)国外黑客 1971年,卡普尔从耶鲁大学毕业.在校期间,他专修心理学.语言学以及计算机学科.也就是在这时他开始对计算机萌生兴趣.他继续到研究生院深造.20世纪60年代,退学是许多人的 ...

  3. mysql 三阶多项式拟合_2014年9月份考试机械CAD_CAM第二次作业

    2014年9月份考试机械CAD/CAM第二次作业 一.单项选择题(本大题共40分,共 20 小题,每小题 2 分) 1. 在CAD作业中,采用数据文件形式来处理工程数表.线图数据,其目的是() A. ...

  4. 2021年春季学期-信号与系统-第二次作业参考答案-第十小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第十题 10 从网络学堂下载代表两个信号的音频文件: 音频文件: f1(t)f_1 \left( t \right)f1​( ...

  5. 2021年春季学期-信号与系统-第二次作业参考答案-第九小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第九题 9. 已知三个系统的输入输出关系分别为: 把上述三个子系统进行如下的级联,求系统的输入输出关系,它是线性.时不变系统 ...

  6. 2021年春季学期-信号与系统-第二次作业参考答案-第八小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第八题 8. 判断下列系统是否为线性.时不变.因果? (1)第一小题 r(t)=ddte(t)r\left( t \righ ...

  7. 2021年春季学期-信号与系统-第二次作业参考答案-第七小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第七题 7. 判断下列系统是否可逆.若可逆,给出它的逆系统:若不可逆,指出使该系统产生相同输出的两个输入信号. 判断系统是否 ...

  8. 2021年春季学期-信号与系统-第二次作业参考答案-第六小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第六题 6. 有一线性时不变系统, 当激励e1(t)=u(t)e_1 \left( t \right) = u\left( ...

  9. 2021年春季学期-信号与系统-第二次作业参考答案-第五小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第五题 5. Consider a LTI systems whose response to the singal x1( ...

最新文章

  1. 为什么你应该(从现在开始就)写博客
  2. Java 异常处理中对于 finally 的一些思考
  3. 《思科数据中心I/O整合》一2.11 活动-活动连接(Active-Active)
  4. html调用js页面显示不出来了,JS代码文件调用显示乱码,直接写在html页面的里可以调用,但是单独放在js文件里不能调用...
  5. maven学习(1)
  6. 【编译工具】之gcc中-march与-arch的使用
  7. js 获取html文字颜色,js获得网页背景色和字体色的方法
  8. mysql表索引类型修改_MySQL常用的建表、添加字段、修改字段、添加索引SQL语句写法总结...
  9. 使用Visio画各种可视化的流程图之序列图和价值流图
  10. 去除WinRar压缩 迷你页
  11. c语言 求矩阵各行元素之和
  12. 通过pyhton认识一等函数
  13. 采购管理系统--合同、采购单、发货单、返厂单管理
  14. su命令psimage生成eps格式图片参数
  15. jQuery整体框架
  16. 制作了一个微信公众号导航的网站 http://www.wxgzh.in
  17. 日文106键盘-英文101键盘的更改方法
  18. 超融合如何克服启动风暴?云桌面启动风暴的解决办法
  19. 赛门铁克:“分期付款”非官方行为 执法机关已经介入
  20. Halcon常用算子(库函数)整理

热门文章

  1. 《Algorithms》—— Dijkstra 的双栈算术表达式求值算法
  2. SELinux系列(一)——SELinux是什么
  3. pyspider抓取数字货币价格bitcoin
  4. win8计算机用户名在哪里设置,windows8系统用户名微软ID和管理员账户概念详解
  5. oracle update范例,oracle 12c单范例数据库打12.1.0.2.4补丁记录
  6. 华尔街英语学习软件_华尔街英语吧啦吧啦聊点啥:语言学习交流至上
  7. javascript代码_15个最好用的JavaScript代码压缩工具
  8. 内购订单进行二次处理_物流图表复杂业务场景下的订单管理系统搭建
  9. python导入数据库的数据怎么在qt界面里刷新_Python中使用pyqtgraph库实现数据可视化之逐点刷新波形图...
  10. python web框架哪个好_盘点:9款流行Web框架及其优缺点