第二次作业+105032014125

1.测试帖链接:http://www.cnblogs.com/ff44/p/6603158.html

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

      (1)缺少对非闰年2月的日期界限判断;

      (2)缺少返回值导致错误。

3.修正后的代码清单:

import java.util.Scanner;
public class Date {
    public static void main(String[] args){
        
        System.out.print("请输入日期");
        Scanner input = new Scanner(System.in);
        
        int year = input.nextInt();
        int month = input.nextInt();
        int day = input.nextInt();
        
        GetDate(year,month,day);
        input.close();
    }
     
    public static void GetDate(int year, int month, int day){
         
         if (!(year >= 1912 && year <= 2050)){  //判断年份
             System.out.println("年份超出范围!");
             return;
         }
             
         if (month > 12 || month < 1){//判断月份             
             System.out.println("月份超出范围!");
             return;
         }
                 
         if (day > 31 || day < 1){//判断日期                 
             System.out.println("日期超出范围!");
             return;
         }
         if (month == 4 && day == 31 ){            
             System.out.println("日期超出范围!");
             return;
         }
         if (month == 6 && day == 31){//判断日期            
             System.out.println("日期超出范围!");
             return;
         }
         if (month == 9 && day == 31){//判断日期            
             System.out.println("日期超出范围!");
             return;
         }
         if (month == 11 && day == 31){//判断日期            
             System.out.println("日期超出范围!");
             return;
            }
    
         switch (month){//计算第二天日期            
         case 1:
         case 3:
         case 5:
         case 7:
         case 8:
         case 10:
             if (day == 31){                
                 month++;
                 day = 1;                 
             }
             else day++;
             break;
         case 2:            
             if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){//计算闰年的日期                    
                 if (day > 29){                        
                     System.out.println("日期超出范围!");
                     return;
                 }
                 if (day == 29){                        
                     month = 3;
                     day = 1;
                 }
                 else day++;
             }
             else{                    
                 if (day > 28){                        
                     System.out.println("日期超出范围!");
                     return;
                 }
                 if (day == 28){                        
                     month = 3;
                     day = 1;
                 }
                 else day++;
             }
             break;
         case 4:
         case 6:
         case 9:
         case 11:
             if (day == 30){                
                 month++;
                 day = 1;                
             }
             else day++;                
             break;
         case 12:
             if (day == 31){                
                 year++;
                 month = 1;
                 day = 1;
             }
             else day++;
             break;                   
         }    
         System.out.println(year+"年"+month+"月"+day+"日");
    }
}

     

4.修正:

  初次编写程序的时候,忘记判定非闰年2月的界限范围,同时整个程序中,有一定的逻辑混乱,导致有的结果会出现两个值。

  因为缺少返回值,有时会导致程序出现错误,此次改用Java语言编写,注意到了这方面。

  还修改了程序中的一些小缺陷。

5.体会:

  看过测试人员的测试结果后,重新思考了整个程序的流程,并对测试人员提出的问题,进行详细的思考,然后修正程序中的错误。突然明白,测试人员是必不可少的,他会测出错误,使得程序更加完善。有可能他发现的这个错误

,会让我们明白自己的局限所在,知道自己为什么而错,然后促使我们提高自己的知识水平以便不再重蹈覆辙。

posted @ 2017-03-27 19:16  ghostX  阅读(124)  评论(0编辑  收藏  举报