这题main类不难MyDate类代码如下:
class MyDate{
int day;
int year;
int month;
public int getYear() {
return year;
}
public int getMonth() {
return month;
}
public int getDay() {
return day;
}
void print(){
System.out.printf("%d/%d/%d",month,day,year);
}
int compare(MyDate d){
if(d.year>this.year)
return -1;
if(d.year==this.year)
{
if (d.month==this.month)
if (d.day > this.day)
return -1;
else if (d.day==this.day)
return 0;
else
return 1;
if (d.month>this.month)
return -1;
}
return 1;
}
}
三个get方法都没啥难点,print记得用printf格式化输出,比较方便。
注意点:compare方法中,接收了一个对象,而MyDate类中的年月日都没有写private,故可直接d.year使用变量(“d”为对象名);核心代码为比较两个日期的先后,上面展示的是“笨办法”,挨着比较年月日。其实还可以计算两个日期的天数,先把年*365+月*30+日,不需要考虑润年,每个月全按30天也不会出错,因为两个日期用相同的算法算出来的值,虽然不准确,但是他们的相对时间是可以比较的,下面给出此方法示例compare方法代码
int compare(MyDate d){
int day1=0,day2=0;
day1=this.day+this.month*30+this.year*365;
day2=d.day+d.month*30+d.year*365;
if (day1>day2)
return 1;
if (day2>day1)
return -1;
return 0;
}
诶,还是给一下配套main类叭
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
MyDate Date1=new MyDate();
Date1.year=input.nextInt();
Date1.month=input.nextInt();
Date1.day=input.nextInt();
MyDate Date2=new MyDate();
Date2.year=input.nextInt();
Date2.month=input.nextInt();
Date2.day=input.nextInt();
Date1.print();
System.out.print(" "+Date1.compare(Date2));
}
}
仅供参考,如有更优解,可在评论区参与讨论
Comments NOTHING