输入年月日的值(均为整型数),同时输入一个取值范围在[-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 boolean isLeapYear(int year)
{
if((year%4==0&&year%100!=0)||year%400==0)
{
return true;
}
else
{
return false;
}
}
public static boolean checkInputValidity(int year,int month,int day,int n)
{
if(year>=1820&&year<=2020&&month>=1&&month<=12&&day>=1&&day<=31)
{
return true;
}
else
{
return false;
}
}
public static void nextDate(int year,int month,int day,int n) {
int[] m=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year)==true)
m[2]=29;
int a=0,b=0,c=0;
if(checkInputValidity(year,month,day,n)==true)
{
if(n==0)
{
a=year;
b=month;
c=day;
}
if(month==12&&n>0)
{
if(day-n<=m[month]&&day-n>0)
{
a=year;
b=month;
c=day-n;
}
if(day-n<=m[month]&&day-n<0)
{
a=year;
b=month-1;
c=m[b]-n+day;
}
if(day-n<=m[month]&&day-n==0)
{
a=year;
b=month-1;
c=m[b]-n+day;
}
}
if(month==12&&n<0)
{
if(day-n>m[month])
{
a=year+1;
b=1;
c=day-n-m[month];
}
if(day-n<=m[month])
{
a=year;
b=month;
c=day-n;
}
}
if(month>1&&month<12&&n>0)
{
if(day-n<=m[month]&&day-n>0)
{
a=year;
b=month;
c=day-n;
}
if(day-n<=m[month]&&day-n<0)
{
a=year;
b=month-1;
c=m[b]-n+day;
}
if(day-n<=m[month]&&day-n==0)
{
a = year;
b = month-1;
c = m[b]-n+day;
}
}
if(month<12&&month>1&&n<0)
{
if(day-n>m[month])
{
a=year;
b=month+1;
c=day-n-m[month];
}
if(day-n<=m[month])
{
a=year;
b=month;
c=day-n;
}
}
if(month==1&&n>0)
{
if(day-n<=m[month]&&day-n>0)
{
a=year;
b=month;
c=day-n;
}
if(day-n<=m[month]&&day-n<0)
{
a=year-1;
b=12;
c=m[b]-n+day;
}
if(day-n<=m[month]&&day-n==0)
{
a=year-1;
b=12;
c=m[b]-n+day;
}
}
if(month==1&&n<0)
{
if(day-n>m[month])
{
a=year;
b=month+1;
c=day-n-m[month];
}
if(day-n<=m[month])
{
a=year;
b=month;
c=day-n;
}
}
System.out.println(n+" days ago is:"+a+"-"+b+"-"+c);
}
else
{
System.out.println("Wrong Format");
}
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int year=in.nextInt();
int month=in.nextInt();
int day=in.nextInt();
int n=in.nextInt();
if(isLeapYear(year)==false&&month==2&&day==29)
{
System.out.println("Wrong Format");
}
else
{
nextDate(year,month,day,n);
}
}
}