Java-метод Рекурсия создает проблему после получения значения - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть программа, которая должна получить дату. Я прохожу множество праздников и дату ввода. Если моя дата ввода находится в пределах установленного праздника, то я добавляю к нему один день. Я снова проверяю, что новая дата в праздничном наборе или нет .. и т.д. Как только новый производный и новая дата не в списке праздничных дней, он должен вернуться из этого метода. Но вместо этого метод вызывается снова, и моя производная дата корректируется обратно. Я не понимаю, где я иду не так. Я не могу передать какой-либо контраргумент моему методу для запуска на основе счетчика. Это мой код.

package com.pamu.test;

import java.time.LocalDate;
import java.util.TreeSet;

public class ReturnCheck {

    private LocalDate determineNextWorkingDayIfHolidayOrWeekend(TreeSet<LocalDate> holidaysSet, LocalDate date) {
        System.out.println("determineNextWorkingDayIfHolidayOrWeekend");
        if (holidaysSet.contains(date)) {
            System.out.println(date+" : is a holiday");
            System.out.println("Adding "+1+" day to "+date);
            date = date.plusDays(1);
            System.out.println("So, new date is "+date);
            this.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet, date);
        }
        return date;
    }

    public static void main(String args[]) {
        TreeSet<LocalDate> holidaysSet = new TreeSet<LocalDate>();
        holidaysSet.add(LocalDate.parse("2019-04-30".substring(0, 10)));
        holidaysSet.add(LocalDate.parse("2019-05-01".substring(0, 10)));
        LocalDate date = LocalDate.parse("2019-04-30".substring(0, 10));
        ReturnCheck tdc = new ReturnCheck();
        LocalDate derived = tdc.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet,date);
        System.out.println(derived);
    }
}

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 30 апреля 2019

Вы должны в конечном итоге использовать результат своей рекурсии, изменив строку

this.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet, date);

внутри самого внутреннего if до

return this.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet, date);

, который затем выводит

2019-05-02

...