使用do-while和for循环比较文件

时间:2014-10-22 18:23:31

标签: java loops

首先我要说的是我可以更好地处理这个问题。我已经尝试了几种不同的方式,而我却没有得到它。

情况是有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;之后第一行出现问题。开始。

1 个答案:

答案 0 :(得分:3)

||条件中的&&更改为do while

} while ((j < (dest.size() - 1)) && !x);

如果您从未找到fileDOYint,那么无论j是什么,您的循环都将继续并继续,直到您获得越界异常为止。