Java while循环在满足所有条件之前停止

时间:2018-09-21 02:19:36

标签: java

我有一个项目,其中我的方法获得两个日期,并且一直向该方法添加一天,直到两个日期相等为止,然后您可以通过查看一天被添加了多少次来了解日期的间隔。我的问题是,即使满足日,月和年的所有条件,我的while循环也会在满足白天条件时退出,以使其停止工作

    while (pastDate.getDay() != futureDate.getDay() && 
    pastDate.getMonth() != futureDate.getMonth()  && 
    pastDate.getYear() != futureDate.getYear()){

2 个答案:

答案 0 :(得分:3)

您需要OR一起while循环中的条件:

while (pastDate.getDay() != futureDate.getDay() ||
       pastDate.getMonth() != futureDate.getMonth()  ||
       pastDate.getYear() != futureDate.getYear()) {
    // do something
}

在伪代码中,当两个日期相等时,循环的逻辑将是:

while (day1 == day2 && month1 == month2 && year1 == year2) {
    // ...
}

根据德摩根定律,P AND Q的反义词是~P OR ~Q,当日期为 not时,这将导致以下while循环(再次使用伪代码) 等于:

while (day1 != day2 || month1 != month2 || year1 != year2) {
    // ...
}

答案 1 :(得分:2)

使用.equals()

while (!pastDate.equals(futureDate)) {
    //
}

它不仅更具可读性,而且还准确地保留了日期与实现相同的日期,这正是OOP最佳实践所说的日期。