第二次作业+105032014164

1. 测试帖链接

  • 测试帖链接:http://www.cnblogs.com/cyk0674804/p/6601759.html
  • 第一次开发源代码:http://www.cnblogs.com/123zzj/p/6530599.html

 

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

 缺陷:以上测试,在输入正确的年月日时,可以得到正确的输出;但是在输入格式错误时会直接停止程序运行,或者给出错误的输出。

   建议:

  1. 需要输入年月日的时候可以进行输入限制,当输入格式错误或者非法时,给出错误信息的提示,重新输入,而不是停止运行。

    注:a :4、6 、9、 11月为小月,没有31天。当输入如4 31 时,应提示日期超出范围;

      b:闰年2月有29天,当输入2 30/31 时,应提示日期超出范围;平年2月有28天,当输入2 30/31 时,应提示日期超出范围。

  2. 对于没有输入点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.要学会与其他人多交流,多学习

 

posted @ 2017-03-26 00:59  张增进  阅读(114)  评论(0)    收藏  举报