输入年月日的值(均为整型数),同时输入一个取值范围在[-10,10] 之间的整型数n,输出该日期的前n天(当n > 0时)、该日期的后n天(当n<0时)。
其中年份取值范围为 [1820,2020] ,月份取值范围为[1,12] ,日期取值范围为[1,31] 。
注意:不允许使用Java中任何与日期有关的类或方法。

输入格式:
在一行中输入年月日的值以及n的值,可以用一个或多个空格或回车分隔。

输出格式:
当输入的年、月、日以及n的值非法时,输出“Wrong Format”;
当输入数据合法时,输出“n days ago is:年-月-日”
输入样例1:
在这里给出一组输入。例如:

2018 6 19 8
输出样例1:
在这里给出相应的输出。例如:

8 days ago is:2018-6-11
输入样例2:
在这里给出一组输入。例如:

2018 6 19 -8
输出样例2:
在这里给出相应的输出。例如:

-8 days ago is:2018-6-27

import java.util.Scanner;
public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);boolean f=true;int y=0,m=0,d=0,n=0;if (sc.hasNextInt())y= sc.nextInt();elsef=false;if (sc.hasNextInt())m= sc.nextInt();elsef=false;if (sc.hasNextInt())d= sc.nextInt();elsef=false;if (sc.hasNextInt())n= sc.nextInt();elsef=false;if (checkInputValidity(y,m,d,n)&&f){nextDate(y,m,d,n);}elseSystem.out.println("Wrong Format");}public static boolean isLeapYear(int year) {boolean ret=false;if ((year%100!=0&&year%4==0)||(year%400==0)){ret=true;}return ret;}public static boolean checkInputValidity(int year,int month,int day,int n){boolean ret=false;int[] mm={31,28,31,30,31,30,31,31,30,31,30,31};if (isLeapYear(year))mm[1]=29;if ((year>=1820&&year<=2020)&&(month>=1&&month<=12)&&(day>=1&&day<=mm[month-1])){//此处的month-1用来判断不同年份的不同月份的数据是否合法ret=true;}return ret;}public static void nextDate(int year,int month,int day,int n) {int[] mm={0,31,28,31,30,31,30,31,31,30,31,30,31};if (isLeapYear(year))mm[2]=29;day-=n;if (n>0){while (day<=0){//这边是读错题写的while循环,实际上n在-10到10之间,不需要循环,但是上面的判断n的条件我没有加,//也就是可以判断大于10和小于-10范围以外的n,但是没有详细去测试过,单这道题的测试点来讲是没有问题的month--;if (month==0){//这边因为是mm有0的索引,因此要提前判断是否等于0month+=12;year--;}day+=mm[month];}}else if (n<0){while (day>mm[month]) {day-=mm[month];month++;if (month==13){month-=12;year++;}}}System.out.printf("%d days ago is:%d-%d-%d\n",n,year,month,day);}
}

7-5 求前N天 (30 分)相关推荐

  1. 7-4 求下一天 (30 分)

    ** 7-4 求下一天 (30 分) ** 输入年月日的值(均为整型数),输出该日期的下一天. 其中:年份的合法取值范围为[1820,2020] ,月份合法取值范围为[1,12] ,日期合法取值范围为 ...

  2. Java/可逆素数/个税查询/求前N天

    7-2 可逆素数 (9 分) 朴素写法,正着倒着判断一遍目标数是否是素数,比如对于53,它是一个素数,但是倒过来之后35就是合数.要得到一个数的逆序数,就是把原数的最高位变成新数的最低位,以此类推. ...

  3. PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...

  4. PAT甲级1087 All Roads Lead to Rome (30分):[C++题解]dijkstra求单源最短路综合、最短路条数、保存路径

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 首先这是一道dijkstra算法求最短路的题目,不过此题较为复杂.首先需要将字符串城市名映射成数字,这里使用hash table 名 ...

  5. PAT甲级1119 Pre- and Post-order Traversals (30分):[C++题解]暴搜dfs、前序遍历和后序遍历求中序遍历

    文章目录 题目分析 题目链接 题目分析 分析 给了前序遍历和后序遍历,能够确定根结点,但是左子树和右子树的长度是不确定的.这里采用的解决方案是枚举左子树的结点个数,其实右子树的结点个数也确定了.对于每 ...

  6. PAT甲级1115 Counting Nodes in a BST (30分):[C++题解] 递归建二叉搜索树、dfs求一层结点数量

    文章目录 题目分析 题目链接 题目分析 分析 首先本题给定的二叉搜索树的定义和其他地方的不同.本题小于等于的是左子树,右子树是大于根结点的. 然后说一下做题的思路. 给定一串数据,让构造二叉搜索树. ...

  7. 【CCCC】L3-021 神坛 (30分)计算几何+求三角形面积(极角排序)

    problem L3-021 神坛 (30分) 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如 ...

  8. 任务二:实现求平方根关键算法(30 分)求 n 以内(不包括 n)同时能被 3 和 7 整除的所有自然数之和的平方根 s,然后将结果s 输出。例如若 n 为 1000 时,则 s=153.909

    任务二:实现求平方根关键算法(30 分) 求 n 以内(不包括 n)同时能被 3 和 7 整除的所有自然数之和的平方根 s, 然后将结果 s 输出.例如若 n 为 1000 时,则 s=153.909 ...

  9. 小明放学(30分)求大佬帮忙看看哪里有问题

    时间限制:1s 内存限制:512.0mb 题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项目.具体到交通领域,通过"智慧光明" ...

最新文章

  1. 设计模式 之 设计的 六大原则(1)单一职责原则
  2. pytorch 入门基础
  3. umask:默认权限分配的命令
  4. [Unity][FlowCanvas] FlowScript 搜索功能不可用的解决办法:更新 UnityEditor 的版本
  5. 约瑟夫环问题——python
  6. VB获取windows各常用目录的函数(模块)
  7. 数据科学中的五种认知偏差,你都了解吗?
  8. Linux内核编程02:Kbuild子系统
  9. 紫猫插件-文件读写(1-13)
  10. 多功能计算机器在线,多功能数学计算器(RedCrab The Calculator)
  11. CRM客户管理系统源码PHP开发搭建
  12. 转:Beautiful Soup
  13. Keras LSTM实现多维输入输出时序预测实践详解
  14. 离散选择模型(DCM)和深度神经网络(DNN)结合
  15. 【Java知识点总结】Java 变量
  16. python 曲线拟合(numpy.polyfit、scipy.optimize.curve_fit)
  17. Lyapunov直接法与间接法
  18. 锁存器Latch和触发器Flip-flop的区别
  19. iOS三句话实现文本转语音:AVSpeechSynthesizer
  20. 1602液晶显示实验

热门文章

  1. linux下多版本gcc编译器管理方法
  2. 6.2 gzip:压缩或解压文件
  3. java 手势识别,AndroidStudio:手势识别
  4. 矩形法求定积分的原理和实现
  5. 【宜搭客户说】宜搭帮助教育局搭建教育管理平台
  6. 如何提升业务稳定性?
  7. 如何迁移 Flink 任务到实时计算
  8. 还在自建代码仓库?阿里云的这款企业级代码管理工具免费、还香!
  9. 聊一聊Flutter Engine线程管理与Dart Isolate机制
  10. 闰年的判断方法_平年还是闰年?看一、二季度天数是否一样多就知道