我一直致力于在xml文件(ServiceRequest
)中存储一系列预定事件(自制f
个对象)的程序,当我想要使用它们时我调用readData()
方法(见下文),将ServiceRequest
加载到serviceQueue
(ArrayList<ServiceRequest>
)并标记null
个对象在文件末尾打开以标记ServiceRequest
对象的结尾。
当我在数组中加载对象时,我一直在检查事件的日期(LocalDate
对象)以删除超过270天的事件。现在我的问题是:在将整数270更改为180以尝试跟踪更少的数据之后,立即删除了大部分事件(即当前事件不应该像今天的所有事件一样#39;等等...)。它实际上是我唯一改变的东西,一旦我切换回270并从备份恢复事件,一切都恢复正常。 210似乎也导致我的评价也失败了。
不确定我错过了什么,也许是关于如何评估LocalDate.now().minusDays(XXX)
的内容?如果需要,我可以包含更多我的代码,但这是我改变的唯一方法,并且该方法非常基本:
public static void readData() {
serviceQueue.clear();
try {
Boolean complete = false;
FileReader reader = new FileReader(f);
ObjectInputStream in = xstream.createObjectInputStream(reader);
while(complete != true) {
ServiceRequest test = (ServiceRequest)in.readObject();
if(test != null && test.getDate().isAfter(LocalDate.now().minusDays(210))) {
serviceQueue.add(test); }
else { complete = true; }
}
in.close(); }
catch (IOException | ClassNotFoundException e) { e.printStackTrace(); }
}
我使用LocalDateTime
变量start
和stop
来跟踪事件日期/时间,以便.getDate()
方法只返回start
LocalDate
格式:
public LocalDate getDate() { return start.toLocalDate(); }
答案 0 :(得分:1)
datę检查没问题。如果日期不匹配,问题是将complete
设置为true
。
if(test != null &&test.getDate().isAfter(LocalDate.now().minusDays(210))) {
serviceQueue.add(test); }
else { complete = true; }
尝试以下代码:
if(test != null) {
if (test.getDate().isAfter(LocalDate.now().minusDays(210)) {
serviceQueue.add(test);
}
}
else {
complete = true;
}