【问题标题】:Is it possible to reverse each line of a file using a BufferedReader?是否可以使用 BufferedReader 反转文件的每一行?
【发布时间】:2012-05-08 04:04:06
【问题描述】:

假设我正在导入一个包含行的文件。我想通过递归输出序列的尾部,然后是序列的头部来反转这个文件。这可能使用 BufferedReader 吗?还是我首先需要将这些行导入列表?我必须用递归来做。

例如,我有一个包含以下内容的文件:

你好 我的 姓名 是 标记

我希望它在另一个文件中以相反的顺序输出:

标记 是 姓名 我的 你好

我想我已经正确创建了递归方法,虽然它编译得很好,但是程序运行后输出文件是空的。

public void Reverse(BufferedReader br, PrintWriter pw) {
    try {
        String headLine = br.readLine();
        if (headLine != null) {
            Reverse(br, pw);
            pw.println(br.readLine());
        }
        pw.println(headLine);      
    } //try

【问题讨论】:

  • 您能否举个例子,以便我们了解您的确切要求? :)
  • 如果这是作业,请标记它
  • 请显示您的一些代码。人们不会为你写的。
  • @Gray 添加了上面的递归方法。
  • 请编辑您的代码并向我们展示一些Reverse 还是这样?

标签: java bufferedreader


【解决方案1】:

它必须使用递归

这是一个递归解决方案:

  1. 从文件中读取一行;
  2. 递归反转文件的其余部分;
  3. 写出在步骤 1 中读取的行。

由于这是家庭作业,我让您自己弄清楚如何将其转换为实际的 Java 代码。

【讨论】:

  • 它必须使用递归:)
  • 谢谢,我想我的想法是对的。只是不确定如何递归地阅读尾线。这是我的代码:String headLine = input.readLine(); String currentLine; if (headLine != null) { Reverse(input, output); output.println(currentLine); }//if output.println(headLine);
  • @akshai5050:你的想法是对的。我不确定我是否理解您遇到的困难。
  • 我不确定如何在每次递归调用时读取和输出文件的最后一行,以便反向输出这些行。
  • @akshai5050:你不需要。你所拥有的就足够了(除了headLinecurrentLine 应该是一回事)。我建议您尝试使用已有的代码。
【解决方案2】:

您可能不想直接从头和尾的角度来考虑这一点,而不是直接为您提供解决方案。用线条来思考它,然后阅读this SO question 的答案和讨论。您可以应用相同的技术。

【讨论】:

    【解决方案3】:

    无论如何都要将所有内容读入LinkedList,然后对其进行递归。只是,Collection Framework 对这种工作来说是非常繁琐的搭配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 2016-11-10
      • 2011-01-15
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多