技術關鍵:
滿足兩種條件的整數可以成為閏年:
1、非整百年份能被4整除;
2、整百年份能被400整除。
Java語法:
year % 4 == 0 && year % 100 != 0 || year % 400 == 0
實現過程:
1 package test; 2 import java.util.Scanner; 3 public class LeapYear { 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 Scanner scan = new Scanner(System.in); 7 System.out.println("請輸入一個年份:"); 8 long year = scan.nextLong(); //接收用戶輸入 9 if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { 10 System.out.println(year + "是閏年!"); 11 } else { 12 System.out.println(year + "不是閏年"); 13 } 14 } 15 }
后記:一開始不能理解為什么year % 100 != 0這個條件,畢竟整百年份除以100肯定等於0啊,百度了一下,看到這句話:
判定公歷閏年遵循的規律為: 四年一閏,百年不閏,四百年再閏。
百年不閏!百年不閏!百年不閏!看到這個就明白過來了。
在該實例中有個擴展學習,
判斷指定日期間經過的天數
題:請嘗試判斷從2000年1月1日到2016年5月1日一共經歷多少天。
書上沒給答案,但我自己分析:有了前面實例判斷某年是否為閏年在前,可以先判斷2000~2016年平閏年,平年是365天,閏年是366天,用for循環相加即可。
實現過程:
1 package test; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 8 public class CountDays { 9 public static int differentDays(Date date1,Date date2) { 10 // TODO Auto-generated method stub 11 Calendar cal1 = Calendar.getInstance(); 12 cal1.setTime(date1); 13 14 Calendar cal2 = Calendar.getInstance(); 15 cal2.setTime(date2); 16 17 int day1 = cal1.get(Calendar.DAY_OF_YEAR); 18 int day2 = cal2.get(Calendar.DAY_OF_YEAR); 19 20 int year1 = cal1.get(Calendar.YEAR); 21 int year2 = cal2.get(Calendar.YEAR); 22 23 int days = 0; 24 for (int i = year1; i < year2; i++) { 25 if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { //閏年 26 days += 366; 27 } else { //平年 28 days += 365; 29 } 30 } 31 return days + (day2 - day1); 32 } 33 34 /* 35 * 測試 36 */ 37 public static void main(String[] args) { 38 String dateStr = "2000-1-1"; 39 String dateStr2 = "2016-5-1"; 40 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 41 try { 42 Date date1 = format.parse(dateStr); 43 Date date2 = format.parse(dateStr2); 44 System.out.println("2000年1月1日到2016年5月1日一共經歷了:" + differentDays(date1,date2) + "天。"); 45 } catch (ParseException e) { 46 e.printStackTrace(); 47 } 48 } 49 }
運行結果如下圖所示,一共經歷了5965天。

我不放心,又用了最原始的方法,在紙上列出2010年至2016年5月1日的天數,相加后得到的結果確實是5965天。