使用Java的对象和类是我的逻辑

时间:2017-01-17 21:50:17

标签: java

我已经上课了,MyDate课程举行某人的生日,并且在两个日期之间做出差异的逻辑。 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;
    }

Person这些是两个相关的方法:

 public int age() {
        // you get the current day as follows: 
        //Calendar.getInstance().get(Calendar.DATE);
        //Calendar.getInstance().get(Calendar.MONTH) + 1; // January is 0 so we add one
        //Calendar.getInstance().get(Calendar.YEAR);

        return calendar.differenceInYears(this.birthday);
    }

calendar是我在班级中发起的new MyDate,其中包含当前日期。

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

public boolean olderThan(Person compared) {
        if (this.age() > compared.age()) {
            return true;
        }
        return false;
    }

我不确定问题是什么,该程序似乎运行良好,但是当我测试并让练习检查程序是否正常运行时它会给我这样的信息:

失败:PersonTest olderThanTest2

2009年12月31日出生的人Helga应该比Janika年长,出生于2010年1月1日

1 个答案:

答案 0 :(得分:0)

伪代码:

param1 date1 param2 date2

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;