名为时间的类包含方法isEarlier(Time): boolean
,如果时间早于时间,则会返回true
对象作为参数传递,否则返回false
。
第二个名为日期的类包含类似的方法isEarlier(Date): boolean
,如果日期早于日期,则返回true
对象作为参数传递,否则返回false
。
名为任务的第三个类有两个数据字段Date date
和Time time
。此类还包含一个名为isEarlier(Task): boolean
的方法,如果任务的安排早于作为参数传递的任务,则返回true
。该方法如何仅使用时间和日期对象中的isEalier()
方法来确定任务是否更早?
我不认为在不知道日期是否相同的情况下甚至可以做到这一点,这是不可能的,因为isEarlier()
方法只返回true
或false
。我是对的吗?
这更像是一个逻辑问题,而不是特定于语言的问题。
public boolean isEarlier(Task argTask) {
if (date.isEarlier(argTask.date)) {
return true; // date is earlier
} else if ("Is this possible without equality comparison here?")
// date is the same, so we must also check the time
return time.isEarlier(argTask.time);
} else {
return false; // date is later
}
}
答案 0 :(得分:1)
如果时间类中没有相等比较方法,则必须使用isEarlier
进行反向比较,以确定何时比较time
字段。
public boolean isEarlier(Task argTask) {
if(this.date.isEarlier(argTas.date)) {
return true;
} else if(argTask.date.isEarlier(this.date)) {
return false;
} else if(this.time.isEarlier(argTask.time)) { //reached if date fields are equal
return true;
}
//At this stage, either `argTask.time.isEarlier(this.time)` returns true
//or date and time in both objects are exactly equal
return false;
}
答案 1 :(得分:0)
你是对的,如果日期相同,你必须比较时间,但现在无法知道是否是这种情况。
如果你想要一个没有相等比较的else if语句,你可以填写true,但在那种情况下你的else语句永远不会被执行。