У меня есть задача сделать симулятор экзамена.Что я имею в виду, ученик вводит свое имя, фамилию и рождение после того, как учитель вводит свои оценки по некоторым предметам, а затем он решает, сдал ли ученик предмет или нет.Итак, у меня есть вопрос, как записать в файл текст с новой строкой и читать с перезаписью этого файла (читать построчно и переписывать).Например: я добавляю такой текст в файл Jimmy Kordon 05.10.1998
, как создать новую строку для этого, я имею в виду после 1998
, а затем добавляю еще один штрих.И это должно выглядеть так:
Jimmy Kordon 05.10.1998
Alex Starr 12.09.2000
После этого я вызываю другой метод, который переписывают в этот
Jimmy Kordon 05.10.1998 200.0 yes
Alex Starr 12.09.2000 10.0 no
Вот как я это сделал.У меня есть проблема причина после переписывания у меня нет новой строки, и если добавить нового человека, этот метод просто удалить старую информацию, а затем добавить новую.В чем проблема?Пожалуйста, помогите мне.
Это метод для добавления информации учеником (этот метод имеет класс ученика).
public void write() throws IOException {
Scanner in = new Scanner(System.in);
System.out.println("Input name");
String name = in.nextLine();
setName(name);
System.out.println("Input last name");
String lastName = in.nextLine();
setLastName(lastName);
System.out.println("Input birthday");
String birth = in.nextLine();
setBirth(birth);
String ex = getName() + " " + getLastName() + " " + getBirth();
BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt"));
try {
writer.write(getName() + " " + getLastName() + " " + getBirth());
writer.newLine();
//writer.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
writer.close();
}
}
И этот метод я вызываю из класса учителя, чтобы переписать эту информацию:
private void inputMarks() {
Scanner in = new Scanner(System.in);
System.out.println("Input Math mark");
emM = new ExamMarks();
emM.setMath(in.nextDouble());
System.out.println("Input Physics mark");
emP = new ExamMarks();
emP.setPhysics(in.nextDouble());
System.out.println("Input Ukrainian mark");
emU = new ExamMarks();
emU.setUkrainian(in.nextDouble());
System.out.println("Input English mark");
emE = new ExamMarks();
emE.setEnglish(in.nextDouble());
}
private double Arithm(double Math, double Physics, double Ukrainian, double English) {
double sum = Math + Physics + Ukrainian + English;
double average = sum / 4.0;
return average;
}
public void rewrite() {
inputMarks();
String a = read();
System.out.println(Arithm(emM.getMath(), emP.getPhysics(), emU.getUkrainian(), emE.getEnglish()));
Scanner in = new Scanner(System.in);
System.out.println("Input yes/no");
String YesNo = in.nextLine();
try(BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt"))) {
writer.write(a + " " + Arithm(emM.getMath(), emP.getPhysics(), emU.getUkrainian(), emE.getEnglish())
+ " " + YesNo);
writer.newLine();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}