You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何使用PrintWriter将void类型方法的输出结果写入文件

问题分析

你现有代码存在3个核心问题:

  • printTree 方法返回值为void,没有返回任何可写入文件的内容,直接调用output.write(printTree(4))会直接编译报错
  • 目前printTree中所有输出都定向到控制台System.out,和你在main方法中创建的文件输出流没有关联
  • 你导入了PrintWriter,不符合你「尽量只使用FileWriter」的要求

修改方案

我们可以给printTree方法新增一个FileWriter类型的入参,让方法直接把生成的三角形内容写入传入的文件流中,不需要额外返回值,也符合题目对方法名和功能的要求。
修改后可运行的代码如下:

import java.io.FileWriter;
import java.io.IOException;

public class OutputToFile14 {
    public static void main(String[] args) throws IOException {
        // 创建FileWriter,绑定输出文件file14.txt
        FileWriter fileWriter = new FileWriter("file14.txt");
        // 调用printTree方法,直接将内容写入关联的文件,示例高度为3
        printTree(3, fileWriter);
        // 关闭流确保内容写入磁盘
        fileWriter.close();
    }

    /**
     * 生成指定高度的星号三角形并写入传入的FileWriter
     * @param height 三角形高度
     * @param writer 输出目标文件流
     * @throws IOException IO异常
     */
    public static void printTree (int height, FileWriter writer) throws IOException {
        for (int i = 1; i <= height; i++) {
            // 输出i个星号
            for (int j = 0; j < i; j++) {
                writer.write("*");
            }
            // 输出换行
            writer.write("\n");
            // 若需要同时在控制台打印,可在这里添加对应System.out输出代码
        }
    }
}

代码说明

  • 仅导入了FileWriter和必检异常IOException,符合你对导入类的要求
  • printTree方法不需要返回值,直接通过传入的FileWriter将内容写入文件,避免了拼接字符串返回的额外开销
  • 调整了循环逻辑,高度为3时会正确输出3行星号,第一行1个、第二行2个、第三行3个,符合题目的示例要求

内容的提问来源于stack exchange,提问作者Achor Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:06:03