码迷,mamicode.com
首页 > 编程语言 > 详细

计算两日期间2月29日总数的Java程序

时间:2015-10-22 00:16:59      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

  事先声明,本人仅仅是个计算机领域的新手,不久前开始学习Java。后来我接到了一份关于计算两日期间2月29日总数的编程作业,仓促之中我便写下了这个程序。由于之前可以说毫无编程经验,Java也仅仅是只学了一小部分。所以目前该程序尚未解决输入问题。

  我解决这个问题的思路是:

  1. 编写一个方法(leapYear)用于判断某一年份是否为闰年;
  2. 编写另一个方法(dateExist)用于判断某一时期是否真实存在,在这方法中会引用到上个方法;
  3. 最后编写main方法,引用方法(dateExist)分别判断起始日期和终止日期是否真实存在;
  4. 倘若均真实存在。假如起始和终止日期不在同一年,这对起始和终止年份之间的年份枚举,把闰年总数计算出来,在这过程中引用方法(leapYear);不真实存在则显示提示。
  5. 最后判断起始和终止年份是否为闰年及起始/终止月份是否小于/大于2月,并把符合条件的2月29日算出,在这过程中也须引用方法leapYear。

  

  以下是我的代码:

  1 public class LeapYearComputing
  2 {
  3     //判断某一年份是否为闰年。
  4     public static boolean leapYear(int y) { 
  5         boolean leapYear;
  6         if (y % 4 == 0) {
  7             if(y % 100 == 0) {
  8                 if(y % 400 == 0) {
  9                     leapYear = true;
 10                 }
 11                 else {
 12                     leapYear = false;
 13                 };
 14             }
 15             else {
 16                 leapYear = true;
 17             };
 18         }
 19         else {
 20             leapYear = false;
 21         };
 22         return leapYear;
 23     };
 24     
 25     //判断某一日期是否存在,不考虑公元前的年份。
 26     public static boolean dateExist(int year ,int month ,int date) {
 27         boolean dateExist;
 28         if (year > 0 ) {
 29             if (month > 0 && month < 13) {
 30                 if (date > 0 && date < 32) {
 31                     switch(month) {
 32                         case 2:
 33                         case 4:
 34                         case 6:
 35                         case 9:
 36                         case 11:
 37                             if (date < 31) {
 38                                 if (month == 2) {
 39                                     if (leapYear(year)) {
 40                                         if (date < 30) {
 41                                             dateExist = true;
 42                                         }
 43                                         else {
 44                                             dateExist = false;
 45                                         };
 46                                     }
 47                                     else if (date < 29) {
 48                                         dateExist = true;
 49                                     }
 50                                     else {
 51                                         dateExist = false;
 52                                     };
 53                                 }
 54                                 else if (date < 31) {
 55                                     dateExist = true;
 56                                 }
 57                                 else {
 58                                     dateExist = false;
 59                                 };
 60                             }
 61                             else {
 62                                 dateExist = false;
 63                             };
 64                             break;
 65                         default:
 66                             if (date < 32) {
 67                                 dateExist = true;
 68                             }
 69                             else {
 70                                 dateExist = false;
 71                             };
 72                     };
 73                 }
 74                 else {
 75                     dateExist = false;
 76                 };
 77             }
 78             else {
 79                 dateExist = false;
 80             };
 81         }
 82         else {
 83             dateExist = false;
 84         };
 85         return dateExist;
 86      };
 87     
 88     //计算两个日期间2月29日数量。
 89     public static void main(String[] args) {
 90         int year1 = 2013;              //输入起始年份。
 91         int month1 = 9;             //输入起始月份。
 92         int date1 = 28;              //输入起始日期。
 93         int year2 = 2015;              //输入终止年份。
 94         int month2 = 1;             //输入终止月份。
 95         int date2 = 3;              //输入终止日期。
 96         int result = 0;
 97         int Year = year1 + 1;
 98         if (dateExist(year1,month1,date1)) {                      
 99             if (dateExist(year2,month2,date2)) {                 
100                 while (Year < year2 ) {
101                     if (leapYear(Year)) {
102                         result ++;
103                     };
104                     Year ++;
105                 };
106                 if (year1 == year2) {
107                     result --;
108                 };
109                 if (month1 <= 2) {
110                     if (leapYear(year1)) {
111                         result ++;
112                     };
113                 };
114                 if (month2 > 2) {
115                     if (leapYear(year2)) {
116                         result ++;
117                     };
118                 };
119                 System.out.println("两个日期之间有" + result + "个2月29日");
120             }
121             else {
122                 System.out.println("终止日期并不真实存在。");
123             };
124         }
125         else {
126             System.out.println("起始日期并不真实存在。");
127         };
128         
129         
130         
131     
132     };
133 }

  PS:本程序不考虑公元前年份。我原本考虑公元前的情况,但虑及公元前并无公元纪年,而且关于闰年的定义极有可能不在适用,便把年份限定在公元后。

    当起始和终止年份在同一年,且这一年是闰年的情况下,应将闰年数减一。

  各位若发现该程序的不足之处或有更好的算法,还望多多指教。

计算两日期间2月29日总数的Java程序

标签:

原文地址:http://www.cnblogs.com/gsllchb/p/4899335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!