PTA 求前N天 (Java)

时间:2025-03-10 07:58:05
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"); } }