текст.файл, который можно добавить без удаления предыдущих данных - PullRequest
0 голосов
/ 21 января 2019

Мое задание - воссоздать игру.Одним из требований является наличие текста.файл, который сохраняет 10 лучших результатов в игре и обновляет их, когда пользователь продолжает играть.Файл также должен быть доступен пользователю для просмотра.

До сих пор я смог создать файл и добавить к нему счет, но я пытался снова и снова добавлять новые результаты, не стирая старые, я пытался new FileWriter("file", true) идругие методы, которые были предложены онлайн, но ни один из них не работает.

Я не могу понять, как я могу сортировать данные и заменять баллы, когда приходят более высокие баллы, если я не могу даже сохранить более одного балла в текстовом формате.файл.Пожалуйста, дайте мне знать простой способ сделать это, я чрезвычайно новичок в программировании.

public static void scores() {
  PrintWriter output = null;
  try {
    output = new PrintWriter(new FileWriter("/Users/name/Desktop/javaoutput.txt"));
  } catch (IOException e) {
    e.printStackTrace();
  }
  output.println(counter);
  output.close();
}

Логично для меня создать массив, хотя что-то все еще не так.Есть идеи, как мне это исправить?

ОБНОВЛЕННЫЙ КОД:

public static void scores() {
  int temp;
  int line;
  PrintWriter output = null;
  try {
    output = new PrintWriter(new FileWriter("/Users/name/Desktop/javaoutput.txt"));
  } catch (IOException e) {
    e.printStackTrace();
  }

  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  BufferedReader input = null;
  try {
    input = new BufferedReader(new FileReader("/Users/name/Desktop/javaoutput.txt"));
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  }
  try {
    line = (Integer.parseInt(input.readLine()));
  } catch (IOException e) {
    e.printStackTrace();
  }
  for (int i = 0; i < 10; i++) {
    try {
      topscores[i] = (Integer.parseInt(input.readLine()));
    } catch (NumberFormatException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  topscores[10] = counter;
  for (int i = 0; i < 11 - 1; i++) {
    for (int j = 0; j < 11 - 1 - i; j++) {
      if (topscores[j] > topscores[j + 1]) {
        temp = topscores[j];
        topscores[j] = topscores[j + 1];
        topscores[j + 1] = temp;
      }
    }
  }
  for (int i = 0; i < 10; i++) {
    output.println(topscores[i]);
  }
  output.close();

  for (int i = 0; i < 10; i++) {
    topscoress.setText(" " + topscores[i]);
  }
}
}

1 Ответ

0 голосов
/ 21 января 2019

Краткий ответ: Прочтите этот вопрос из stackoverflow на как добавить текст в существующий файл.

Решение вашей проблемы: Doследующий, когда вы получите новый счет.

  1. Считайте существующие строки из файла и сохраните их в массиве int.
  2. Добавьте новый счет в массив (только если он больше чемнаименьшая существующая оценка).
  3. Сортировка массива (если он обновляется с новой оценкой. google Comparator и Comparable для сортировки).
  4. Запись массива в файл (если онобновляется с новым счетом).
...