-1

我正在制作一个 madlib 程序,该程序打开一个 txt 文件,然后向用户询问数据,然后呈现一个最终的 madlib,它完美地显示在控制台中,但只有 madlib 的最后一行出现在文本文件中,请在 Java 中提供帮助。

FileWriter outFile = new FileWriter(name + ".txt");
BufferedWriter bf = new BufferedWriter(outFile);

long start = System.nanoTime();    
content = JOptionPane.showInputDialog("Please enter a/n " + 
       m.group().subSequence(1,m.group().length()-1));

madlib = m.replaceFirst(content);
System.out.println(madlib);
bf.write(madlib);

long elapsedTime = System.nanoTime() - start;
elapsedTime=elapsedTime/1000000;
System.out.println(m.group().subSequence(1,m.group().length()-1) + " ; " + 
       content + " ; " + elapsedTime +"ms");
bf.write(m.group().subSequence(1,m.group().length()-1) + " ; " + content + 
       " ; " + elapsedTime +"ms");
bf.close();
4

3 回答 3

1

我猜你的代码嵌套在 while 循环内,特别是考虑到你使用m.group(),如果是这样,你在循环内有太多的东西,因为你每次循环循环时都创建一个新的 BufferedWriter,因此结束了- 写下之前写的所有东西。

解决方案:在循环之前创建您的 BufferedWriter ,在循环内部使用它写入,并在循环结束关闭它。类似(伪代码):

Create FileWriter
Create BufferedWriter with FileWriter
Start your while loop and loop through your groups
  Do your loops, get your user's input
  Write out the users input using the BufferedWriter
end while loop
Close the BufferedWriter (preferably done in a finally block).

顺便说一句,下次在您的问题中包含所有相关信息,包括您对循环的使用。有时我们在猜测未显示的代码或未提供的信息时会很糟糕。

于 2013-09-27T00:27:55.410 回答
1

根据给出的信息,我只能建议以附加模式打开文件。

安装:

FileWriter outFile = new FileWriter(name + ".txt");

利用:

FileWriter outFile = new FileWriter(name + ".txt", true);
于 2013-09-27T00:34:54.050 回答
0

这段代码只写了一行,实际上甚至没有,只是一个没有行终止符的字符串。每次执行此代码时,它都会将其写入新创建的文件中。您期望文件中会有更多数据的预期没有明显的依据。

您可能打算以“追加”模式打开文件,或者在关闭之前保持文件打开并多次写入。

于 2013-09-27T00:33:11.707 回答