栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

7-2 日期的推算* Java题解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

7-2 日期的推算* Java题解

题目描述:

已知今天的日期,请你推算若干天后是什么日期。

说明:假设今天的日期是 y1​ 年 m1​ 月 d1​ 日,过 n 天后的日期为 y2​ 年 m2​ 月 d2​ 日。

输入格式

y1​/m1​/d1​
n(n>0)

输出格式

y2​/m2​/d2​

注:y2​ 至少4位数字,m2​ 和 d2​ 至少2位数字,若位数不够,则前面补0。

输入样例:

2018/2/14
22

输出样例:

2018/03/08
解题思路:

将输入的天数直接都加到day上,年份分为平润两类,每个类型中以月份为基准,当月份的天数满足条件时,退出循环,否则将超出的天数减去,month++,继续循环,月份满12时,将年份加一,同时将月份置为1。细节较多~

javaAC代码:
import java.io.*;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] split = br.readLine().split("/");
		int year = Integer.parseInt(split[0]);
		int month = Integer.parseInt(split[1]);
		int day = Integer.parseInt(split[2]);
		int n = Integer.parseInt(br.readLine());
		int []d1 = {0,31,28,31,30,31,30,31,31,30,31,30,31};
		int []d2 = {0,31,29,31,30,31,30,31,31,30,31,30,31};
		
		day += n;
		while(true) {
			if(isLeapYear(year)) {
				if(d2[month] < day) {
					day -= d2[month];
				}else {
					break;
				}
				month++;
				if(month > 12) {
					year++;
					month = 1;
				}
			}else {
				if(d1[month] < day) {
					day -= d1[month];
				}else {
					break;
				}
				month++;
				if(month > 12) {
					year++;
					month = 1;
				}
			}
		}
		System.out.printf("%04d/%02d/%02d",year,month,day);
	}
	public static boolean isLeapYear(int year) {
		if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
			return true;
		}
		return false;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/284060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号