#java
Вопрос:
Я сделал функцию с высоким баллом для своей игры. Это работает нормально, но каждый раз, когда я закрываю программу и запускаю ее обратно, высокий балл сбрасывается до 0. Пожалуйста, помогите мне это исправить. Например:
1st time: My high score is 50 and it saves my score to file
2nd time: I close the game and run it back my score is 30. It still saves it to high score file
This is because the high score every time it runs is 0.
Вот мой код для проверки высокого балла. В принципе, он будет сравнивать результаты и высокие баллы, а затем сохранять их в файле.
private String highScore = "Nobody:0"; //I think this is the problem because highscore =0 at start
public void CheckHighScore() {
if (score > Integer.parseInt((highScore.split(":")[1]))) {
String name = JOptionPane.showInputDialog("You set a new highScore. What 's your name?");
highScore = name ":" score;
File scoreFile = new File("highscore.dat");
if (!scoreFile.exists()) {
try {
scoreFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileWriter writeFile = null;
BufferedWriter writer = null;
try {
writeFile = new FileWriter(scoreFile,true);
writer = new BufferedWriter(writeFile);
writer.write(this.highScore);
writer.newLine();
}
catch (Exception e) {
}
finally {
try {
if (writer != null)
writer.close();
}
catch (Exception e) {}
}
}
}
Комментарии:
1. Когда вы запускаете свою программу, вам нужно прочитать файл рекордов и проанализировать присвоение переменной рекордов.
Ответ №1:
не могли бы вы, пожалуйста, ответить на один вопрос?
i.) Вы хотите, чтобы ваш последний список рекордов был доступен при загрузке игры? если да, то вы ничего не читаете из файла, а просто записываете в него. Вы можете просто выбрать самый высокий из списка.
-> если первая часть верна, то да, > String highScore = "Nobody:0"
неверно, так как вы каждый раз инициализируете значение до нуля, вместо этого его следует считывать из файла, в котором были сохранены данные.
Вы можете попробовать это, чтобы прочитать определенные строки: try (Stream<String> all_lines = Files.lines(Paths.get("myfile.txt"))) { specific_line_n = all_lines.skip(n-1).findFirst().get(); }
Комментарии:
1. Да, я хочу выбрать самый высокий из списка. Я использую этот код для чтения последней строки, которая находится в другой функции, называемой GetHighScore(). Он создаст файл и прочитает последнюю строку txt.но я не знаю, как добавить его в CheckHighScore() выше. попробуйте { Строка last=null, строка; Файл чтения = новый читатель файлов(«рекорд.дата»); считыватель = новый читатель буфера(файл чтения); в то время как ((строка = reader.readLine()) != null) { если (строка != null) { последняя = строка; } }
2. если функция GetHighScore() возвращает строку с рекордом, просто проанализируйте, присвоив значение переменной рекорд