对于java中求一个闰年, 或许大家都很熟悉: 就是 判断这个年份能被4整除,并且不能被100整除, 或者是能被400整除 在这里直接上代码
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个年份");
int i = sc.nextInt();
//for(int i = 0 ;i<10000;i++){
if((i%4==0&&i%100!=0)||i%400==0){
System.out.println(i+"是闰年");
}else{
System.out.println(i+"是平年");
}
//}
这样可以很简单的求出一个闰年, 但是还有第二种方式: 只需要判断这个月的2月份有多少天, 如果是29天就是闰年, 如果是28天就是平年. 还是直接上代码
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个年份");
int year = sc.nextInt();
Calendar c = Calendar.getInstance();
. 设置输入年3月1日, set(int year, int month, int day);
c.set(year, 2, 1);// 设置成3月1日 , 这里获取月份表示范围是[0,11]表示[1,12]月份
将这个日历对象的中的天数,向前偏移一天,add(int field, int amount);
c.add(Calendar.DAY_OF_MONTH, -1); 前面设置成了3月1日, 3月1日向前偏移一天就是2月的最后一天
获取这个月的天数.get(int Field);
int day = c.get(Calendar.DAY_OF_MONTH);
if(day == 29){
System.out.println(year + "年是闰年");
}else{
System.out.println(year + "年是平年");
}
到了这里就出现了问题 当年份为
//100,200,300,500,600,700,900
//1000,1100,1300,1400,1500,1700,1800,1900
//2100,2200,2300,2500,2600,2700,2900
//3000,3100,3300,3400,3500,3700,3800,3900
//4100,4200,4300,4500,4600,4700,4900 ..................
这些时 , 本应该是平年 , 用偏移输出的却是闰年 也就可以理解成:上面年份的二月 在java时间中是29天. 很明显 ,这是错误的
知错能改善莫大焉!