PTA 求前N天 (Java)
import java.util.Scanner;
public class Main {
//主方法
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();
f(year,month,day,n);
}
//判断year是否为闰年,返回boolean类型
public static boolean isLeapYear(int year)
{
boolean isLeapYear=false;
if((year%4==0&&year%100!=0)||year%400==0)//闰年
isLeapYear=true;
else
isLeapYear=false;
return isLeapYear;
}
public static void f(int year,int month ,int day ,int n)
{
//用数组 a[0]设为0
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year)==true)
months[2]=29;//如果是闰年 二月改为29
int newyear=0;
int newmonth=0;
int newday=0;
if(year<=2020&&year>=1820&&month<=12&&month>=1&&day>=1&&day<=months[month]&&n>=-10&&n<=10)
{
if(n==0)//当天
{
newyear=year;
newmonth=month;
newday=day;
}
if(n<0)//往后
{
n=-n;//改为正数方便计算
if(month==12)//12月
{
if(day+n>31)//是否跨年
{
newyear=year+1;
newmonth=1;
newday=day+n-31;
}
else
{
newyear=year;
newmonth=month;
newday=day+n;
}
}
else
{
if(day+n>months[month])
{
newyear=year;
newmonth=month+1;
newday=day+n-months[month];
}
else
{
newyear=year;
newmonth=month;
newday=day+n;
}
}
n=-n;//改回
}
if(n>0)//往前
{
if(month==1)//1月
{
if(day-n<1)//是否跨年
{
newyear=year-1;
newmonth=12;
newday=months[12]-(n-day);
}
else
{
newyear=year;
newmonth=month;
newday=day-n;
}
}
else
{
if(day-n<1)
{
newyear=year;
newmonth=month-1;
newday=months[month-1]-(n-day);
}
else
{
newyear=year;
newmonth=month;
newday=day-n;
}
}
}
System.out.println(n+" days"+" ago"+" is:"+newyear+"-"+newmonth+"-"+newday);
}
else
System.out.println("Wrong Format");
}
}