Проблема написание числа в читаемый простой текстовый файл в Java [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
Проблема написание числа в читаемый простой текстовый файл в Java [закрыто]

Сообщение Anonymous »

У меня есть проблема, создавая текстовые файлы в Java. Я сделал простую игру с цветными шариками, и когда сталкиваются два одинаковых шарика, счет увеличивается с 5 очками каждый раз. Я пытаюсь сохранить счет для того, чтобы быть доступным для загрузки при запуске новой игры в файле «point.txt». Java создает файл «point.txt», но он сделан только из нечитаемых символов.

Код: Выделить всё

---- 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));
Обновление 2: [/b] Следуя предложению от коллеги -пользователя, я использовал редактор HEX, чтобы лучше увидеть разницу между bw.write (точки) и bw.write (string.valueof (точки) .
​​ в первом случае, сохранение 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

Вернуться в «JAVA»