Java对象和类我的逻辑有一个缺陷

Java对象和类我的逻辑有一个缺陷,java,Java,我已经做了太多的课程,MyDateclass会为某人的生日举行,并根据逻辑计算两个日期之间的年差Person保存着某人的姓名和生日,您可以在其中查看一个人是否比另一个人年长 在MyDate中,这就是我如何获得年份差异的原因: public int differenceInYears(MyDate comparedDate) { int difference = 0; if (this.year > comparedDate.year) {

我已经做了太多的课程,
MyDate
class会为某人的生日举行,并根据逻辑计算两个日期之间的年差
Person
保存着某人的姓名和生日,您可以在其中查看一个人是否比另一个人年长

MyDate
中,这就是我如何获得年份差异的原因:

public int differenceInYears(MyDate comparedDate) {
        int difference = 0;

        if (this.year > comparedDate.year) {
            difference = this.year - comparedDate.year;

            if (this.month == comparedDate.month && this.day < comparedDate.day
                    || this.month < comparedDate.month) {
                difference -= 1;
            }
        }
        if (comparedDate.year > this.year) {
            difference = comparedDate.year - this.year;

            if (comparedDate.month == this.month && comparedDate.day < this.day
                    || comparedDate.month < this.month) {
                difference -= 1;
            }
        }
        return difference;
    }
calendar
是我在保存当前日期的类中启动的
新MyDate

我使用的第二种方法检查一个人是否比另一个人年长:

public boolean olderThan(Person compared) {
        if (this.age() > compared.age()) {
            return true;
        }
        return false;
    }
我不确定问题是什么,程序似乎运行良好,但当我测试并让练习检查程序是否运行良好时,它会给我以下消息:

失败:PersonTest Older测试2

出生于2009年12月31日的Helga应该比出生于2010年1月1日的Janika年长伪代码:

参数1日期1 参数2日期2

if (date1.year == date2.year){
    if (date1.month == date2.month){
        return date1.day > date2.day;
    }
    else
        return date1.month > date2.month;
}
else
    return date1.year > date2.year;
伪代码:

参数1日期1 参数2日期2

if (date1.year == date2.year){
    if (date1.month == date2.month){
        return date1.day > date2.day;
    }
    else
        return date1.month > date2.month;
}
else
    return date1.year > date2.year;

return calendar.differenceinyear(this.birth)此处比较的
人在哪里?您需要更改逻辑并直接比较两个日期:Helga和Janika。它更直观,更容易编码。更有效的方法是:如果Helga出生于2001年,Janika出生于2005年,那么就完成了。检查Java类型
Java.util.Date
Java.util.Calendar
下面的伪代码,这两种类型都有方法
之后和
之前
返回Calendar.DifferenceInEars(this.Birth)此处比较的
人在哪里?您需要更改逻辑并直接比较两个日期:Helga和Janika。它更直观,更容易编码。更有效的方法是:如果Helga出生于2001年,Janika出生于2005年,那么就完成了。检查Java类型
Java.util.Date
Java.util.Calendar
下面的伪代码,这两种类型都有
之后的方法和
之前的方法。