
我们先看代码public class Main { public static void main(String[] args) { int count 0; for(int year 1900 ; year 9999 ; year) { int sumYear getSum(year); for (int month 1; month 12; month) { int maxDay getMaxDay(month , year); int sumMonth getSum(month); for(int day 1 ; day maxDay ; day){ int sumDay getSum(day); if(sumYear sumMonth sumDay){ count; } } } } System.out.println(count); } public static int getSum(int num){ int sum 0; while(num 0){ sum num % 10; num / 10; } return sum; } public static int getMaxDay(int month ,int year){ switch (month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: return isLeapYear(year) ? 29 : 28; default: return 0; } } public static boolean isLeapYear(int year) { return ((year % 4 0 year % 100 ! 0) || year % 400 0) ; } }我们分模块分析这部分函数是为了获取每一位数字并将其加和这部分函数是为了找到每个月的最大天数注意还有闰年的存在所以要有一个判断函数如果是的话就返回true如果不符合就返回false