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

如何将值存入数组并写入文件?解决写入时覆盖重复问题

解决FileWriter覆盖数据的问题

嘿,我看了你的代码,问题出在两个地方,导致数据被覆盖或者丢失:

  • 数组初始化的位置错了:你把doubleAVG和charGRADE放在循环里面创建,每次循环都会生成一个全新的空数组,之前循环存的学生数据直接就没了——相当于每次循环都把之前的记录清空,只存当前这一个学生的信息。
  • FileWriter的模式(可选):如果是多次运行程序想保留之前的文件内容,默认的FileWriter会直接覆盖整个文件,不过从你的描述看,同一循环里的问题主要是数组的问题。

下面是修复后的代码,我标了关键修改点:

try {
    // 把数组初始化移到循环外面,这样数组能容纳所有学生的数据,不会每次循环重置
    doubleAVG = new double[students];
    charGRADE = new char[students];
    
    // 要是想每次运行程序时把新数据追加到文件末尾,就用 new FileWriter(fileN, true)
    // 要是只需要本次循环写入所有学生数据,用默认模式就行
    FileWriter fw = new FileWriter(fileN); 
    
    for (int count = 0; count < students; count++) {
        // 现在给数组对应位置赋值,数据会一直存在数组里
        doubleAVG[count] = Avg;
        charGRADE[count] = gradeLetter;
        
        // 写入当前学生的信息
        fw.write("This is the grade of: " + FirstName + " " + LastName + " ");
        fw.write(String.valueOf(doubleAVG[count]) + " ");
        fw.write(charGRADE[count]);
        fw.write("\n"); // 加个换行,文件内容会更整洁
    }
    fw.close();
} catch (Exception e) {
    System.out.println(e);
}

额外提两个小建议:

  • 如果你需要多次运行程序都保留之前的记录,一定要用追加模式的FileWriter,也就是构造器里加第二个参数true,不然每次运行都会把之前的文件内容全清掉。
  • 记得加换行符\n,不然所有学生的信息会挤在一行,后期看文件会很头疼。

内容的提问来源于stack exchange,提问作者Roberto Andino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:17:14