Java

回文,模拟,判断日期

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    private static boolean isLeap(int year){
        return (year%4==0&&year%100!=0)||year%400==0;
    }
    private static boolean isValidDate(int y,int m,int d){
        if(m<1||m>12||d<1){
            return false;
        }
        int[] monthDays={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if(isLeap(y)){
            monthDays[2]=29;
        }
        return d<=monthDays[m];


    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a=in.nextInt();
        int b=in.nextInt();
        int start_year=a/10000;
        int end_year=b/10000;
        int count=0;
        for(int y=start_year;y<=end_year;y++){
            String year_str=Integer.toString(y);
            String reversed_year_str=new StringBuilder(year_str).reverse().toString();
            int m=Integer.parseInt(reversed_year_str.substring(0,2));
            int d=Integer.parseInt(reversed_year_str.substring(2,4));
            int date=y*10000+m*100+d;
            if(date>=a&&date<=b){
                if(isValidDate(y,m,d)){
                    count++;
                }
            }

        }
        System.out.println(count);

    }
}