UT源码116

2)NextDate函数问题


NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性


NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件:


条件1 1≤ month ≤12 否则输出,月份超出范围


条件2 1≤ day ≤31 否则输出,日期超出范围


条件3 1912≤ year ≤2050 否则输出:年份超出范围


String nextdate(m,d,y)


注意返回值是字符串。


程序要求:


1)先显示“请输入日期”


2)不满足条件1,返回:“月份超出范围”;不满足条件2,返回:“日期超出范围”;不满足条件3,返回:“年份超出范围”;


3)条件均满足,则输出第二天的日期:格式“****年**月**日”(如果输入2050年12月31日,则正常显示2051年1月1日)


直到输入 -1,程序退出。

package test1;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
public class Test {
    public static int year;
    public static int month;
    public static int day;
    public static void main(String[] args) throws Exception {
        String[] input = { "输入年 :", "输入月 :", "输入日 :" };
        while(true){
            System.out.println("请输入日期:");
            Scanner sc = new Scanner(System.in);
            year = input(input[0], sc, 0);
            month = input(input[1], sc, 1);
            day = input(input[2], sc, 2);
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month - 1);
            calendar.set(Calendar.DATE, day + 1);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
            System.out.print("第二题日期为:");
            System.out.println(sdf.format(calendar.getTime()));
            System.out.print("输入‘-1’退出,其他继续:");
            String T=sc.nextLine();
            if(T.equals("-1")){
                return ;
            }
            
        }
    }
    public static int input(String message, Scanner sc, int index) {
        while (true) {
            System.out.print(message);
            String str = sc.nextLine();
            try {
                int result = Integer.parseInt(str);
                if (index == 0 && !(result >= 1920 && result <= 2050)) {
                    System.out.println("年份超出范围");
                    continue;
                }
                if (index == 1 && !(result >= 1 && result <= 12)) {
                    System.out.println("月份超出范围");
                    continue;
                }
                if (index == 2) {
                    int end = endDay(year,month);
                    if (!(result >= 1 && result <= end)) {
                        System.out.println("日期超出范围");
                        continue;
                    }
                }
                return result;
            } catch (Exception e) {
                System.out.println("input error!");
            }
        }
    }
    public static int endDay(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DATE, 0);
        return c.get(Calendar.DATE);
    }
}

 

posted @ 2017-03-10 15:41  Trotteur  阅读(173)  评论(0编辑  收藏  举报