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
下面的伪代码,这两种类型都有之后的方法和之前的方法。