如何将值存入数组并写入文件?解决写入时覆盖重复问题
解决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
相关产品推荐
相关产品推荐

