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

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

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

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

以下是我的代码:

public class LeapYearComputing

{

//判断某一年份是否为闰年。

public static boolean leapYear(int y) {

boolean leapYear;

if (y % 4 == 0) {

if(y % 100 == 0) {

if(y % 400 == 0) {

leapYear = true;

}

else {

leapYear = false;

};

}

else {

leapYear = true;

};

}

else {

leapYear = false;

};

return leapYear;

};

//判断某一日期是否存在,不考虑公元前的年份。

public static boolean dateExist(int year ,int month ,int date) {

boolean dateExist;

if (year > 0 ) {

if (month > 0 && month < 13) {

if (date > 0 && date < 32) {

switch(month) {

case 2:

if (leapYear(year)) {

if (date < 30) {

dateExist = true;

}

else {

dateExist = false;

};

}

else if (date < 29) {

dateExist = true;

}

else {

dateExist = false;

};

break;

case 4:

case 6:

case 9:

case 11:

if (date < 31) {

dateExist = true;

}

else {

dateExist = false;

};

break;

default:

if (date < 32) {

dateExist = true;

}

else {

dateExist = false;

};

};

}

else {

dateExist = false;

};

}

else {

dateExist = false;

};

}

else {

dateExist = false;

};

return dateExist;

};

//计算两个日期间2月29日数量。

public static void main(String[] args) {

int year1 = 555; //输入起始年份。

int month1 = 2; //输入起始月份。

int date1 = 28; //输入起始日期。

int year2 = 2012; //输入终止年份。

int month2 = 2; //输入终止月份。

int date2 = 28; //输入终止日期。

int result = 0;

int Year = year1 + 1;

if (dateExist(year1,month1,date1)) {

if (dateExist(year2,month2,date2)) {

while (Year < year2 ) {

if (leapYear(Year)) {

result ++;

};

Year ++;

};

if (year1 == year2 && leapYear(year1)) {

result --;

};

if (month1 <= 2 && leapYear(year1)) {

result ++;

};

if (month2 > 2 || (month2 == 2 && date2 == 29) && leapYear(year2)) {

result ++;

}

System.out.PRintln("两个日期之间有" + result + "个2月29日");

}

else {

System.out.println("终止日期并不真实存在。");

};

}

else {

System.out.println("起始日期并不真实存在。");

};

};

}

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

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

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航