第二次作业+105032014164
1. 测试帖链接
- 测试帖链接:http://www.cnblogs.com/cyk0674804/p/6601759.html
- 第一次开发源代码:http://www.cnblogs.com/123zzj/p/6530599.html
2. 测试人员提出的问题、发现的缺陷
缺陷:以上测试,在输入正确的年月日时,可以得到正确的输出;但是在输入格式错误时会直接停止程序运行,或者给出错误的输出。
建议:
- 需要输入年月日的时候可以进行输入限制,当输入格式错误或者非法时,给出错误信息的提示,重新输入,而不是停止运行。
注:a :4、6 、9、 11月为小月,没有31天。当输入如4 31 时,应提示日期超出范围;
b:闰年2月有29天,当输入2 30/31 时,应提示日期超出范围;平年2月有28天,当输入2 30/31 时,应提示日期超出范围。
- 对于没有输入点enter就结束这个功能可以适当修改一下,如果不小心点到了,程序就结束运行了。
3. 修正后的代码清单
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scanner; public class pro1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); boolean flag = true; int mouth = 0, year = 0, day = 0; String mouthStr, yearStr, dayStr; while (true) { while (flag) { try { System.out.print("请输入年份:|"); yearStr = in.nextLine(); year = Integer.parseInt(yearStr); flag = false; } catch (Exception e) { System.out.println("请输入正确的年份"); } } flag = true; while (flag) { try { System.out.print("请输入月份:|"); mouthStr = in.next(); mouth = Integer.parseInt(mouthStr); flag = false; } catch (Exception e) { System.out.println("请输入正确的月份"); } } flag = true; while (flag) { try { System.out.print("请输入日期:|"); dayStr = in.next(); day = Integer.parseInt(dayStr); flag = false; } catch (Exception e) { System.out.println("请输入正确的日期"); } } System.out.println(getNowDay(mouth, day, year)); } } /* * @ function: 返回输入日期的第二天, * * @ return: String */ public static String getNowDay(int mouth, int day, int year) { if (year <= 2050 && year >= 1912) { } else { return "年份超出范围"; } if (mouth <= 12 && mouth >= 1) { } else { return "月份超出范围"; } if (day <= 31 && day >= 1) { } else { return "日期超出范围"; } SimpleDateFormat date = new SimpleDateFormat("yyyy年MM月dd日"); String str = year + "年" + mouth + "月" + day + "日"; date.setLenient(false); Date getdate = null; String now = ""; try { getdate = date.parse(str); Calendar calendar = new GregorianCalendar(); calendar.setTime(getdate); calendar.add(calendar.DATE, 1);// 把日期往前增加一天.整数往后+1,负数往前-1 getdate = calendar.getTime(); // 这个时间就是日期当天的结果 now = date.format(getdate); } catch (ParseException e) { // TODO Auto-generated catch block System.out.println("日期不存在,请重新输入"); } return now; } }
4. 修正后心得体会
1.写代码的时候太随意,没考虑太多,应该认真对待每一个细节
2.自己以为还可以的代码,其实一堆的bug;
3.要学会与其他人多交流,多学习
浙公网安备 33010602011771号