Algs4-1.2.11根据Date的API实现一个SmartDate类型
2021-07-04 16:09
标签:ret size void throw return str amp col new Algs4-1.2.11根据Date的API实现一个SmartDate类型 标签:ret size void throw return str amp col new 原文地址:https://www.cnblogs.com/longjin2018/p/9848883.html
答:
参考资料:月份中的二月是28天还是29天,需看年份是否为闰年,闰年定义为:年份能被400整除的是闰年,或者年份能被4整除但不能被100整除的是闰年。
Code:
public class SmartDate
{
private final int myYear;
private final int myMonth;
private final int myDay;
public SmartDate(int month,int day,int year)
{
//暂不支持公元前。
if(year //月份只能是1至12的整数
if(month12) throw new IllegalArgumentException("month is error.");
//日只能是1至31的整数
if(day31) throw new IllegalArgumentException("day is error.");
//偶数月份的日只能是1至30的数
if(month%2==0 && day>30) throw new IllegalArgumentException("day is error.");
//非润年的2月,日只能是1至28的数
if(year%400!=0 && (!(year%4==0 && year%100!=0))
&& month==2 && day>28) throw new
IllegalArgumentException("day is error.");
//润年的2月,日只能是1至29的数
if((year%400==0 || (year%4==0 && year%100!=0)) &&
month==2 && day>29) throw new IllegalArgumentException("day
is error.");
myYear=year;
myMonth=month;
myDay=day;
//
}
public int month()
{
return myMonth;
}
public int day()
{
return myDay;
}
public int year()
{
return myYear;
}
public String toString()
{
return month()+"/"+day()+"/"+year();
}
public static void main(String[] args)
{
SmartDate d=new SmartDate(9,18,2016);
StdOut.printf("Date is:%s",d.toString());
}
}
文章标题:Algs4-1.2.11根据Date的API实现一个SmartDate类型
文章链接:http://soscw.com/essay/101802.html