首先我要说的是我可以更好地处理这个问题。我已经尝试了几种不同的方式,而我却没有得到它。
情况是有2个文件夹。文件夹1中的文件每天从其他来源自动下载。需要做的是通过第二个程序,处理新文件,然后将最终结果添加到第二个文件夹。
我的方法是使用几个listarray并比较每个列表中的文件。然后即使由于某种原因这个程序停止了几天,它仍然可以赶上处理文件。但是,比较文件不能正常工作,我的界限出错了。两个列表中的文件都以Julian格式命名,因此可以进行比较。这是代码:
for (int i = 0; i < files.size(); i++) {
file = files.get(i);
String fileDOY = file.substring(4, 7);
int fileDOYint = Integer.parseInt(fileDOY);
}
boolean x = false;
ArrayList<String> dest = destin(name);
int j = 0;
do {
String destination = dest.get(j);
String dayDest = destination.substring(8, 10);
int dayInt = Integer.parseInt(dayDest);
if (dayInt == fileDOYint) {
x = true;
}
j++;
} while ((j < (dest.size() - 1)) || !x);
if (!x) {
System.out.println("work " + file);
}
除错误外,输出不会呈现任何内容。当我将最后一个if语句中的变量更改为true时处理时,它会一直运行,直到丢失文件然后出现错误。因此,它似乎正在正确地处理循环,但是某些东西并没有触及最后的if语句。该错误表示&#34; do&#34;之后第一行出现问题。开始。
答案 0 :(得分:3)
将||
条件中的&&
更改为do while
} while ((j < (dest.size() - 1)) && !x);
如果您从未找到fileDOYint
,那么无论j
是什么,您的循环都将继续并继续,直到您获得越界异常为止。