编写定义日期类及使用日期类对象,要求:定义构造方法,实现初始化,定义显示日期的成员方法,定义计算两个日期之间的相距天数的成员方法...

package naizi;

import java.util.Scanner;

public class Date {

//定义私有成员变量
private int yy,mm,dd;
//定义构造方法
public Date(int yy,int mm,int dd){
    this.yy=yy;
    this.mm=mm;
    this.dd=dd;
}
//生成get和set方法
public int getYy() {
    return yy;
}
public void setYy(int yy) {
    this.yy = yy;
}
public int getMm() {
    return mm;
}
public void setMm(int mm) {
    this.mm = mm;
}
public int getDd() {
    return dd;
}
public void setDd(int dd) {
    this.dd = dd;
}

//计算两个日期之间的相距天数的成员方法
int DiffDays(Date d){
    int [] DAY1={31,28,31,30,31,30,31,31,30,31,30,31};
    int [] DAY2={31,29,31,30,31,30,31,31,30,31,30,31};
    int day=0,day1=0,day2=0,i;
    if(yy==d.getYy()&&mm==d.getMm()){                 //判断是否在同一年,同一月
        return d.getDd()-dd;
    }else if(yy==d.getYy()){                          //判断在同一年不同月份
        if(yy%400==0||(yy%100!=0&&yy%4==0)){          //能被400整除或者不能被100整除但能被4整除为闰年
            for(i=0;i<mm-1;i++){
                day1+=DAY2[i];
            }
            day1+=dd;
            for(i=0;i<d.getMm()-1;i++){
                day2+=DAY2[i];
            }
            day2+=d.getDd();
            return day2-day1;
        }else{
            for(i=0;i<mm-1;i++){
                day1+=DAY1[i];
            }
            day1+=dd;
            for(i=0;i<d.getMm()-1;i++){
                day2+=DAY1[i];
            }
            day2+=d.getDd();
            return day2-day1;
        }
    }else{                                             //否则不在同一年同一月
        if(d.getYy()%400==0||(d.getYy()%100!=0&&d.getYy()%4==0)){
            for(i=0;i<d.getMm()-1;i++){
                day2+=DAY2[i];
            }
            day2+=d.getDd();
        }else{
            for(i=0;i<d.getMm()-1;i++){
                day2+=DAY1[i];
            }
            day2+=d.getDd();
        }
        if(yy%400==0||(yy%100!=0&&yy%4==0)){
            for(i=0;i<mm-1;i++){
                day1+=DAY2[i];
            }
            day1+=dd;
        }else{
            for(i=0;i<mm-1;i++){
                day1+=DAY1[i];
            }
            day1+=dd;
        }
        for(i=yy;i<d.getYy();i++){
            if(i%400==0||(i%100!=0&&i%4==0)){
                day+=366;
            }else{
                day+=365;
            }
        }
        return day2+day-day1;
    }
}

    
public static void main(String[] args) {
    int a,b,c;
    Date d1,d2;
    try{
    Scanner sc = new Scanner(System.in);
    String str1 = sc.next();
    a=Integer.parseInt(str1);
    str1 = sc.next();
    b=Integer.parseInt(str1);
    str1 = sc.next();
    c=Integer.parseInt(str1);
    d1=new Date(a,b,c);
    String str2 = sc.next();
    a=Integer.parseInt(str2);
    str2 = sc.next();
    b=Integer.parseInt(str2);
    str2 = sc.next();
    c=Integer.parseInt(str2);
    d2=new Date(a,b,c);
    System.out.println("Daynum:"+d1.DiffDays(d2));
    }catch(Exception e){
    System.out.println("error");
    }
    }
}

测试如图:

TcGpjIC.png

转载于:https://www.cnblogs.com/zqm-sau/p/9762833.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.编写类MyDate.java 2.该类有如下构造方法 2.1 无参数构造方法public MyDate(),以当前的系统时间构造MyDate对象 2.2 public MyDate(int year, int month, int day), 以指定的年月日构造MyDate对象 3.该类有如下属性 3.1 private int year ;//年 3.2 private int month; //月 3.3 private int day; //日 4.该类有如下方法 4.1 public String after(int day); //返回当前对象代表的日期之后day天的日期,比如当前对象是2008-8-8,调用after(5)以后,应该返回2008-8-13,格式可自定义 4.2 public String before(int day); //返回当前对象代表的日期之前day天的日期,比如当前对象是2008-8-8,调用before(5)以后,应该返回2008-8-3,格式可自定义 4.3 public void setYear(int year); //设置年为指定值year 4.4 public void setMonth(int month); //设置月为指定值month 4.5 public void setDay(int day); //设置日为指定值day 4.6 public int getYear(); //返回当前对象的年 4.7 public int getMonth(); //返回当前对象的月 4.8 public int getDay(); //返回当前对象的日 4.9 public void set (int year, int month, int day); //设置年、月、日为指定的值year、month、day 4.10 public String toString();//以字符串形式返回当前对象的年月日,例如2008年08月08日,格式可自定义 4.11 public boolean equals(MyDate mydate);//当前对象与另一个对象比较,如果两个对象的年月日均相等,则返回true,反之返回false 5.编写TestMyDate.java,在main方法中对MyDate类的各个方法进行测试 6.按照编程规范为MyDate.java编写规范的代码 7.按照java doc API的要求,对代码编写规范的注释,然后利用javadoc.exe命令生成MyDate.java的API doc 8.撰写上机报告

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值