gpt4 book ai didi

java - 递归方法没有输出

转载 作者:行者123 更新时间:2023-12-01 19:05:10 25 4
gpt4 key购买 nike

我有以下方法来读取文件并以相反的顺序输出其行:

public void Reverse(BufferedReader br, PrintWriter pw)
{
try
{
String headLine = br.readLine();

if (headLine != null)
{
Reverse(br, pw);
pw.println(br.readLine());

}//if
pw.println(headLine);
}//try
}//Reverse

由于某种原因,当代码运行时,我在输出文件中看不到任何内容,但它编译正确。有什么想法吗?

最佳答案

首先,您的代码甚至无法编译 - 您有一个没有 catch 或 finally block 的 try block 。当我们看不到您的真实代码时,就比平常更难确定发生了什么。

其次,您会无缘无故地调用 readLine() 两次,然后写出 headLine,即使它为 null。你的代码不应该是:

if (headLine != null)
{
Reverse(br, pw);
pw.println(headLine);
}

之后没有额外的println

我的猜测是,您永远不会刷新或关闭 PrintWriter,并且您已经关闭了自动刷新。不要那样做。或者也许某处存在异常,PrintWriter 不会报告该异常,因为它会吞掉它们。就我个人而言,我建议只使用 WriterBufferedWriter 而不是 PrintWriter,并声明 Reverse 可以抛出IOException。然后确保调用代码在finally block 中关闭编写器。

我还建议不要为此使用递归,除非您只是使用它作为研究递归的一种方式。将整个文件读入字符串列表,反转它,然后全部写出来会更明智。

关于java - 递归方法没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com