#java
#java
Вопрос:
У меня есть JOptionPane, который предлагает пользователю задать вопрос и получить случайно сгенерированный ответ. Я пытаюсь написать файл, в котором записываются все вопросы и ответы, но FileWriter записывает только последний вопрос и ответ. Вот мой код:
import javax.swing.JOptionPane;
import java.util.Random;
import java.io.*;
public class Magic8Ball {
public static void main(String [] args)throws Exception {
final String QUIT = "quit";
Random rand = new Random();
int max = 7;
int min = 0;
int randomNum;
FileWriter fw = new FileWriter("fortune.txt");
PrintWriter pw = new PrintWriter(fw);
BufferedWriter out = new BufferedWriter(fw);
String[] answers = new String[8];
String question = JOptionPane.showInputDialog(" Enter a question or " QUIT " to exit " );
Create8Ball(answers);
while (!question.equals(QUIT)) {
randomNum = rand.nextInt((max - min) 1) min;
System.out.println(answers[randomNum]);
pw.println("Question: " question);
pw.println("Fortune Response: " answers[randomNum]);
question = JOptionPane.showInputDialog(" Enter a question or " QUIT " to exit " );
}
pw.close();
System.exit(0);
}
public static void Create8Ball(String answers[]) throws Exception
{
FileReader fr = new FileReader ("answers.txt");
BufferedReader br = new BufferedReader (fr);
String dog = null;
int cat = 0;
while ((dog = br.readLine()) != null)
{
answers[cat] = dog;
cat ;
}
//close the input file
br.close();
}
}
Ответ №1:
Добавить в файл:
FileWriter fw = new FileWriter("fortune.txt", true);
Комментарии:
1. Спасибо! я вынул BufferedWriter и добавил pw.flush(); перед pw.close (); кажется, выполняет задание.
Ответ №2:
Возможно, вам нужен этот конструктор FileWriter(String fileName, boolean append)
. Он создаст объект FileWriter с именем файла с логическим значением, указывающим, следует ли добавлять записанные данные.
Вероятно, это сработает FileWriter fw = new FileWriter("fortune.txt",true);