我已经上课了,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日
答案 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;