java - 如何递归打印文件数组?

标签 java recursion

我想知道如何递归打印文件[]。我已经编写了一个程序,但似乎该程序超出范围,我不知道如何修复它。有人可以给我一些关于如何解决这个问题的指示或提示吗?谢谢。

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/

相关文章:

java - 替换 @Autowired Httpservlet 以及为什么在 springbok 中 Autowired httpservlet 不是一个好的实践?

java - 无法使用 spring 5 Autowiring hibernate 5 sessionfactory

java - Windows 客户端与 Web 客户端

algorithm - 查找点,距离和线上所有其他点的总和是最低的

C++ 相互递归变体类型

java - java中txt文件中字符的出现

java - 如何从java调用Nodejs函数

Java:给定数组、整数和数组长度,递归搜索数组中的整数

c++ - 自顶向下递归下降解析 : Relying on tail call optimization

使用递归函数时的 C++ 堆栈溢出