Код: Выделить всё
---- DroppingStickyBalls.java ----
int points = 0;
int highScore = 0;
public DroppingStickyBalls(){
.... //other settings
loadScore();
//the score is saved when the window of the game is getting closed
Main.getFrame().addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if(points > highScore) saveScore();
e.getWindow().dispose();
}
});
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g.create();
....// other code - in case of collision between same-colored balls ->
points += 5;
g2.dispose();
}
public void saveScore(){
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("points.txt"));
bw.write(String.valueOf(points)); //here it was the problem!
bw.close();
}catch (IOException e){
e.printStackTrace();
}
}
public void loadScore(){
File file = new File("points.txt");
if(file.exists()) {
try {
BufferedReader br = new BufferedReader(new FileReader(String.valueOf(file.toPath())));
System.out.println(br.readLine());
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
---- points.txt ----
//the result both in Notepad and IntelliJ IDEA showed unreadable symbols
< /code>
Я попытался открыть текстовый файл как в идее Intellij, либо в блокноте, но результат одинаково: содержание кодируется и нечитаемо. Есть ли некоторые настройки кодирования, которые я должен изменить? При использовании BufferedWriter для написания числа в читаемый простой текстовый файл в Java , [b] его метод write () должен использовать строковое значение! Таким образом, для правильного чтения значения в текстовом файле, оно должно использоваться таким образом: < /p>
bw.write(String.valueOf(points));
в первом случае, сохранение points> ash user ryprite> workswrite> workswrite> workswrite> workswrite>. Написано в текстовом файле как один байт , как это 00110010 , который 50 в десятилетом , но переводится в hex как 32 , который 2 в таблице Ascii. Таким образом, вместо чтения 50 в тексте файла результаты показывают 2 , что совершенно неверно. Также здесь он может показаться результатами, как в моем случае с скремблированными нечитаемыми символами! 00110000 , которые 53 48 в десятичном и переведены в hex как 35 30 , которые 50 в таблице ASCII. Таким образом, результат полностью читается и точен: 50 точек .>
Подробнее здесь: https://stackoverflow.com/questions/797 ... le-in-java