java:For循环在达到特定条件后没有中断。

时间:2012-04-20 14:56:54

标签: java

我正在使用apache.commons jar从文件夹中读取最新的10个文件(按创建日期)

这是列出所有文件,但我不知道为什么即使在完成阅读10个文件后这仍然没有停止

这是我的代码,但我不知道为什么它没有停止

import org.apache.commons.io.comparator.LastModifiedFileComparator;
import java.io.File;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        File dir = new File("D:\\MyFolder");
        File[] files = dir.listFiles();

        Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
        for (int i = 0; i < files.length; i++) {

             if(files.length==10)
             {
             // return;
                 break ; 
             }

            File file = files[i];
            System.out.printf(file.getName()+"\n");


        }


    }
}

3 个答案:

答案 0 :(得分:3)

更改

if(files.length==10)

if(i == 10)

您总是在比较文件数组的长度。

答案 1 :(得分:3)

错误的条件

for (int i = 0; i < files.length; i++) {

        File file = files[i];
        System.out.printf(file.getName()+"\n");
    }

应该是

for (int i = 0; i < files.length && i < 10; i++) {

        File file = files[i];
        System.out.printf(file.getName()+"\n");
}

答案 2 :(得分:1)

条件应该是if (i == 10),因为files.length不会随着循环的每次迭代而改变。更好的是,按如下方式更改代码:

int end = Math.min(files.length, 10);
for (int i = 0; i < end ; i++) {
    // ... your code
}

这将计算结束索引一次,并避免在循环中重新计算。