1. 测试帖链接
- 测试帖链接:http://www.cnblogs.com/chenxxiaol/p/6603076.html
- 第一次开发源代码:http://www.cnblogs.com/chenyp1996/p/6530651.html
2. 测试人员提出的问题、发现的缺陷
缺陷:无
建议:
- 输入界面不友好;
- 对于没有输入点enter就结束这个功能可以适当修改一下,如果不小心点到了,程序就结束运行了。
- 输入三个数后才判断,如果第一个数就不符合规则的话会浪费时间,希望能够从输入年份就开始进行判断,避免时间的浪费。
3. 修正后的代码清单
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Calendar; 4 import java.util.Scanner; 5 6 /*NextDate函数问题 7 NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性 8 NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一 9 天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件: 10 条件1 1≤ month ≤12 否则输出,月份超出范围 11 条件2 1≤ day ≤31 否则输出,日期超出范围 12 条件3 1912≤ year ≤2050 否则输出:年份超出范围 13 String nextdate(int m,int d,int y) 14 注意返回值是字符串。 15 程序要求: 16 1)先显示“请输入日期” 17 2)不满足条件1,返回:“月份超出范围”;不满足条件2,返回:“日期超出范围”; 18 不满足条件3,返回:“年份超出范围”;如果出现多个不满足,以最先出现不满足的 19 错误返回信息。3)条件均满足,则输出第二天的日期:格式“****年**月**日”(如果 20 输入2050年12月31日,则正常显示2051年1月1日*/ 21 public class MyDate { 22 public static String nextdate(int month, int day, int year) { 23 if (month < 1 || month > 12) 24 return "月份超出范围"; 25 if (day < 1 || day > 31) 26 return "日期超出范围"; 27 if (year < 1912 || year > 2050) 28 return "年份超出范围"; 29 SimpleDateFormat sFormat = new SimpleDateFormat("yyyyMMdd"); 30 sFormat.setLenient(false); 31 try { 32 Calendar c = Calendar.getInstance(); 33 c.setTime(sFormat.parse("" + year + String.format("%02d", month) + String.format("%02d", day))); 34 c.add(Calendar.DATE, 1); 35 return c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月" + c.get(Calendar.DATE) + "日"; 36 } catch (ParseException e) { 37 return "日期不存在"; 38 } 39 } 40 41 public static void main(String[] args) { 42 String input = ""; 43 int month, date, year;//优化效率 44 Scanner scan = new Scanner(System.in); 45 while (true) { 46 System.out.print("请输入日期"); 47 input = scan.nextLine().trim(); 48 String[] buf = input.split("[\\s+::,,/]");// 支持多种分割方式 49 if (input.equals(""))//无输入 50 continue; 51 else if (input.equalsIgnoreCase("return"))// 改进退出方式 52 break; 53 else if (buf.length == 3) { 54 try { 55 month = Integer.valueOf(buf[1]); 56 date = Integer.valueOf(buf[2]); 57 year = Integer.valueOf(buf[0]); 58 System.out.println(nextdate(month, date, year)); 59 } catch (NumberFormatException e) { 60 System.out.println("日期格式错误"); 61 } 62 } else//长度不对 63 System.out.println("日期格式错误"); 64 } 65 System.out.println("谢谢使用,再见~"); 66 scan.close(); 67 } 68 }
4. 修正后心得体会
- 一个优秀的程序必须要让客户用着舒服,而不仅仅在于通过测试。
- 测试人员应该具备一定的开发知识,开发人员也要有一定的测试知识,两者并不互相矛盾。
- 适当的增加注释和优化代码可以让程序执行的更加顺畅。
- 测试人员和开发人员应该做好沟通协调的工作。
时间: 2024-10-27 04:24:48