确定任务是否更早,只知道日期是否更早以及时间是否更早

时间:2018-05-06 09:14:18

标签: java date object time logic

名为时间的类包含方法isEarlier(Time): boolean,如果时间早于时间,则会返回true 对象作为参数传递,否则返回false

第二个名为日期的类包含类似的方法isEarlier(Date): boolean,如果日期早于日期,则返回true 对象作为参数传递,否则返回false

名为任务的第三个类有两个数据字段Date dateTime time。此类还包含一个名为isEarlier(Task): boolean的方法,如果任务的安排早于作为参数传递的任务,则返回true。该方法如何仅使用时间和日期对象中的isEalier()方法来确定任务是否更早?

我不认为在不知道日期是否相同的情况下甚至可以做到这一点,这是不可能的,因为isEarlier()方法只返回truefalse。我是对的吗?

这更像是一个逻辑问题,而不是特定于语言的问题。

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
    }
}

2 个答案:

答案 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语句永远不会被执行。