Java:递归写入文件

标签 java recursion

好的,这是我的情况:

我有一个递归函数,它正在计算某些内容并将其打印到屏幕上。现在我需要将该输出保存到文件中。

所以我这样做了:

public void recursiveFn(int value) throws FileNotFoundException {
     recursiveFn(a);
     PrintWriter fileOP = new PrintWriter("file.txt")
     fileOp.printf(somevaluefromthisfunction)
}

这种方法的问题是,每次递归调用该函数时,都会创建一个新文件,并且所有先前的递归调用数据都会被删除。

现在我的方法是让文件在此函数之外创建通货紧缩。这就是我所做的:

public class MyClass {
      PrintWriter fileOP = new PrintWriter("file.txt") //line 2

      public void recursiveFn(int value) {
         recursiveFn(a);
         fileOp.printf(somevaluefromthisfunction)
    }
}

这有什么问题吗?我在第 2 行收到此错误:“未处理的异常类型 FileNotFoundException”。在调试此错误的过程中,我几乎掉了 5% 的头发!

最佳答案

问题是变量初始化可能会引发必须处理的异常。其他人已经展示了几种不同的方法来处理这个问题。在我看来,最好的方法是设置递归方法所需的所有内容(如 PrintWriter),然后调用递归方法。

public class MyClass {
    public void doSomething(int value) {
        PrintWriter fileOP = new PrintWriter("file.txt");
        this.recursiveFn(value,fileOP);
    }
    public void recursiveFn(int value,PrintWriter fileOp) {
         int a = value + 1; // Or whatever
         recursiveFn(a,fileOp);
         fileOp.printf(somevaluefromthisfunction);
    }
}

关于Java:递归写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19939038/

相关文章:

java htmlunit无法加载Javascript

java - 什么是 java.lang.reflect.Field#slot?

recursion - 在Rust中将递归函数转换为迭代器的技术?

algorithm - 找到转换为回文的最小成本

php - 如何在 PHP 中的多维数组中按 key=>value 进行搜索

java - Android:找不到处理 Intent 的 Activity

java - 使用 Java 应用程序分发 Derby DB

c++ - 为什么在似乎满足基本情况后继续调用此递归函数?

javascript - 请帮助我理解这个递归函数

java - 如何在 Windows 上的 java 中使用 Firebase ML-Kit 文本识别