zoukankan      html  css  js  c++  java
  • Algs4-1.2.11根据Date的API实现一个SmartDate类型

    1.2.11根据Date的API实现一个SmartDate类型,在日期非法时抛出一个异常。
    答:
    参考资料:月份中的二月是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<0)       throw new IllegalArgumentException("year is error.");
           //月份只能是1至12的整数
            if(month<1 || month>12)    throw new IllegalArgumentException("month is error.");
           //日只能是1至31的整数
            if(day<1 || day>31)    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());
        }
    }
  • 相关阅读:
    新的开始
    0基础学习ios开发笔记第二天
    0基础学习ios开发笔记第一天
    Linux内核中SPI/I2c子系统剖析
    Linux内核之mmc子系统-sdio
    系统调用和中断处理的异同(以Linux MIPS为例)
    开始lisp的旅程
    Linux kernel驱动相关抽象概念及其实现 之“bus,device,driver”
    Linux kernel驱动相关抽象概念及其实现 之“linux设备模型kobject,kset,ktype”
    /etc/udev
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9848883.html
Copyright © 2011-2022 走看看