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());
    }
}

原文地址:https://www.cnblogs.com/longjin2018/p/9848883.html

时间: 2024-08-02 00:06:44

Algs4-1.2.11根据Date的API实现一个SmartDate类型的相关文章

Java 8 新特性:Java 类库的新特性之日期时间API (Date/Time API ) ——诺诺&quot;涂鸦&quot;记忆

----------   诺诺学习技术交流博客.期待与您交流!    ---------- 详情请查看:http://blog.csdn.net/sun_promise  日期时间API (Date/Time API ) 1.Java8之前java.util.Date和Calendar类的弊端 1)最开始的时候,Date既要承载日期信息,又要做日期之间的转换,还要做不同日期格式的显示,职责较繁杂(不遵守单一职责). 后来从JDK 1.1 开始,这三项职责分开了: 使用Calendar类实现日期和

Android 和Java API的一个坑:SimpleDateFormat

今天上班遇到这么一个意料之外的异常: 出问题的代码是这样的(已去除上下文信息): Log.i(LOG_TAG, new SimpleDateFormat("YYYY-MM-dd HH:mm:ss", Locale.CHINA) .format(System.currentTimeMillis())); 反复检查,感觉没有问题,于是新建一个Java Project,直接输出同样的代码: public class Main{ public static void main(String[]

向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE(&#39;{0}&#39;,&#39;YYYY-MM-DD&#39;))

需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字段','YYYY-MM-DD'))转换.如下: string.Format("insert into tablename (TIME) values(TO_DATE('{0}','YYYY-MM-DD'))",now) 错误写法: string.Format("insert in

快速掌握iOS API的一个小技巧

快速掌握iOS API的一个小技巧 周银辉 iOS SDK和Developer Library中提供了各个类以及函数的帮助文档,这很棒,但要想了解整个库的大体结构(比如UIKit下有哪些类,他们的继承关系如何)这有些让人摸不着头脑,下面有个小技巧: 打开iOS Developer Library, 点击你想要了解的Framework,以UIKit为例,好多东西都是平级地放在一起的,根本看不下去了 然后在搜索框输入: Framework Reference,绝大多数情况下都会出现一个 xxx Fr

利用反射api查找一个类的详细信息

说到这个实例,首先介绍下本人,我是一个php程序员,从事drupal开发2年多,可以说从实习开始就接触这个,至今没有换过,drupal给我的感觉是俩字"强大",今天写一个views的字段,然后需要继承views的views_handler_field类,还要自己实现里面的一些方法,走一些自己的配置设置,查看这个类的时候,发现实在是太多信息了,并且做了好些继承,于是我就想要是能实现一个功能,传入一个类名,然后就能返回类的所有信息(包括,属性,方法,继承,接口,并且这些类所放置的文件位置,

Scala2.11.7学习笔记API说明

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. Scala Standard Library 2.11.7 This is the documentation for the Scala standard library. Package structure The scala package contains core types like Int, Float, Arrayor Option which are accessible in all Scala compil

java8新特性七-Date Time API

简介 Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: 非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一. 设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义.java.util.Date同时包含日期

日更第11期-2015-3-27-processing教程-API篇-第一讲-map(),Table,loadTable(),norm(),lerp()

hI!!今天上线发现我多了一个粉丝!!哇,好高兴! 不过我昨天食言了,没有继续日更......希望不会掉粉..... 不过那是有原因的,我昨天一直在找数据,终于今天给整理好了,我打算这个周末整一整.然后就可以出真正厉害的教程啦!! 我先说一下我接下来会出的教程,然后说说今天发的这个到底是什么. 接下来: 1,美国失业数据可视化 2,地图数据可视化案例教学(案例来自processing教学书visualizing data) 3,中国高考分地域分析 4,API教程 然后说说今天这是干啥. 简单来说

(11)wso2esb 服务 API调用

这篇文章介绍如何通过API调用部署在WSO2 ESB上的服务. 下面以WSO2 自带服务echo为例进行介绍. 1.生成客户端 点击echo服务名称,出现如下界面. 点击"Generate Axis2 Client",出现如下界面. 点击"Generate",生成一个zip文件. 2.生成客户端代码. 解压zip文件,导入Eclipse,或者直接在pox.xml文件目录下输入mvn clean install.生成客户端java代码. 3.客户端认证调用 编写程序调