119 - MyDate类

119 - MyDate类

Time Limit: 1000   Memory Limit: 65535
Submit: 628  Solved: 275

Description

构造日期类MyDate类,包含年月日,提供相应的get和set函数,提供void print()函数打印日期,提供int compare(MyDate d)测试当前对象和参数对象d的早晚,如果早则返回-1,晚则返回1,相等则返回0
在main函数中,读入两个日期对象,输出第一个日期对象的信息,输出两个对象的比较结果

Input

两个日期对象,第一个为当前日期对象的年月日,第二个为待比较日期对象的年月日

Output

当前日期对象的信息,当前对象和待比较日期对象的比较结果

Sample Input

2008 6 12 2009 6 22

Sample Output

6/12/2008 -1
import java.util.Scanner;
class MyDate 
{
	private int year;
	private int month;
    private int day;
	public MyDate() {};
	public MyDate(int year, int month, int day) 
	{
		this.year = year;
		this.month = month;
		this.day = day;
	}
     public int getyear() {return year;}
     public int getmonth() {return month;}
     public int getday() {return day;}
     public int setyear() 
     {
    	 return year;
     }
     public int setmonth() 
     {
    	 return month;
     }
     public int setday() 
     {
    	 return day;
     }
     int compare(MyDate d)
     {//小返回-1 大返回1
     	if(year > d.year)
     	{
     		return 1;
     	}
     	else if(year < d.year)
     	{
     		return -1;
     	}
     	else
     	{
     		if(month > d.month)
         	{
         		return 1;
         	}
     		else if(month < d.month)
         	{
         		return -1;
         	}
     		else
     		{
     			if(day > d.day)
             	{
             		return 1;
             	}
         		else if(day < d.day)
             	{
             		return -1;
             	}
         		else
         			return 0;
     		}
     	}
     }
	public void print(){
		System.out.print(month + "/"+ day +"/"+ year+" ");
	}
}
public class Main
{
    public static void main(String[] args) 
    {
//    	MyDate[] s = new MyDate[2];
    	MyDate date1,d;
         Scanner scan = new Scanner(System.in);     
        	 int year = scan.nextInt();
             int month = scan.nextInt();
             int day = scan.nextInt();
             date1 = new MyDate(year, month, day);
             int year1 = scan.nextInt();
             int month1 = scan.nextInt();
             int day1 = scan.nextInt();
             d = new MyDate(year1, month1, day1);
             date1.print();
             int t = date1.compare(d);
         System.out.print(t);
         
    }
    
}

 

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.撰写上机报告
<think>我们被要求介绍Java中的MyDate,该通常用于表示日期(年、月、日)并提供一些基本操作。根据引用[1]和[2]的描述,我们可以知道这个应该包含以下内容: 1. 私有成员变量:年(year)、月(month)、日(day) 2. 构造方法:用于初始化日期 3. get和set方法:用于访问和修改年月日 4. print()方法:打印日期(按照一定格式) 5. compare(MyDate d)方法:比较当前日期对象与参数日期对象d的早晚,返回-1(当前对象早)、1(当前对象晚)或0(相等) 另外,引用[3]给出了一种可能的实现细节:使用一个字符串数组strMonths来表示月份的缩写(如Jan, Feb等),这可能在打印日期时使用。 因此,我们可以构建一个MyDate,并按照要求实现上述功能。 下面是一个可能的MyDate的实现代码示例(注意:引用[3]中出现了"Sup",这可能是"Sep"的笔误,我们这里改为标准的月份缩写): </think>### Java MyDate介绍 MyDate是Java中用于表示日期的自定义,主要包含年月日三个核心属性,并提供日期操作的基本功能。以下是该的核心特性: #### 核心功能 1. **日期存储** - 存储年、月、日三个整型数据 - 示例属性声明: ```java private int year; private int month; // 1-12 private int day; // 根据月份有效校验 ``` 2. **日期操作** - `void print()`:格式化输出日期 *示例:使用引用[3]的月份缩写数组输出 "15 Sep 2023"* - `int compare(MyDate d)`:日期比较 ```java if(this.year != d.year) return (this.year < d.year) ? -1 : 1; if(this.month != d.month) return (this.month < d.month) ? -1 : 1; return Integer.compare(this.day, d.day); ``` 3. **数据访问** - Getter/Setter方法确保数据安全访问 ```java public int getYear() { return year; } public void setDay(int day) { if(day >=1 && day <= 31) this.day = day; } ``` #### 使用示例 ```java public static void main(String[] args) { MyDate date1 = new MyDate(2023, 9, 15); MyDate date2 = new MyDate(2023, 10, 1); date1.print(); // 输出: 15 Sep 2023 System.out.println(date1.compare(date2)); // 输出: -1 (date1早于date2) } ``` #### 关键实现细节 1. **日期验证**:在Setter方法中需包含有效性检查(如2月不超过29日) 2. **月份转换**:引用[3]的字符串数组实现月份名称映射 ```java private String[] strMonths = {"Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov","Dec"}; // 修正"Sup"为"Sep" ``` 3. **比较逻辑**:按年→月→日的优先级逐级比较[^1][^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值