我想知道如何递归打印文件[]。我已经编写了一个程序,但似乎该程序超出范围,我不知道如何修复它。有人可以给我一些关于如何解决这个问题的指示或提示吗?谢谢。
import java.io.*;
public class RecursiveDir {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[]args) throws IOException {
System.out.print("Please enter a directory name: ");
File f = new File(br.readLine());
FileFilter filter = new FileFilter() {
public boolean accept(File f) {
if(f.isDirectory()) {
return true;
}
return false;
}
};
File[] list = f.listFiles(filter);
System.out.println(returnDir(list,list.length));
}
public static File returnDir(File[] file,int counter) {
File f = file[counter];
if(counter == 0) {
return file[0];
}else {
return f = returnDir(file,counter--);
}
}
}
编辑:我按照下面的评论进行了更改 return f = returnDir(file,counter--);
到
return f = returnDir(file,--counter);
并且还改变了returnDir(list,list.length);
到
returnDir(list,list.length-1);
,我的代码运行良好,但现在没有打印任何内容。
最佳答案
您将超出数组范围,因为您需要传递 list.length - 1
到方法。
即使你这样做了,你也会有无限递归,因为 counter--
将使用 counter 的值,然后递减它。这意味着您正在调用 returnDir
当前值为counter.
使用 --counter
,或counter - 1
.
关于java - 如何递归打印文件数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022490/