Java實例——判斷某一年是否為閏年


技術關鍵:
    滿足兩種條件的整數可以成為閏年:
        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天。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM