第二次作业+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.体会:
看过测试人员的测试结果后,重新思考了整个程序的流程,并对测试人员提出的问题,进行详细的思考,然后修正程序中的错误。突然明白,测试人员是必不可少的,他会测出错误,使得程序更加完善。有可能他发现的这个错误
,会让我们明白自己的局限所在,知道自己为什么而错,然后促使我们提高自己的知识水平以便不再重蹈覆辙。