Java 一旦导出值,递归方法就会出现问题
Java method Recursion is giving problem once the value is derived
我有一个程序可以导出日期。我正在传递一组假期和输入日期。如果我输入的日期在假日集内,那么我将向其添加一天。我再次检查新日期是否在假日集内……等等。一旦新派生和新日期不在假期集列表中,它必须从该方法 return 。但是,不是那个方法再次调用,而是我的派生日期正在调整回来。
我不明白我哪里出错了。我无法根据计数器将对我的方法的任何反驳传递给 运行。这是我的代码。
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);
}
}
非常感谢任何帮助。
您最终需要通过更改行
来使用递归的结果
this.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet, date);
最里面if
到
return this.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet, date);
然后输出
2019-05-02
我有一个程序可以导出日期。我正在传递一组假期和输入日期。如果我输入的日期在假日集内,那么我将向其添加一天。我再次检查新日期是否在假日集内……等等。一旦新派生和新日期不在假期集列表中,它必须从该方法 return 。但是,不是那个方法再次调用,而是我的派生日期正在调整回来。 我不明白我哪里出错了。我无法根据计数器将对我的方法的任何反驳传递给 运行。这是我的代码。
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);
}
}
非常感谢任何帮助。
您最终需要通过更改行
来使用递归的结果this.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet, date);
最里面if
到
return this.determineNextWorkingDayIfHolidayOrWeekend(holidaysSet, date);
然后输出
2019-05-02