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);
    }
}

 

转载于:https://www.cnblogs.com/trottuer/p/6531013.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值