Code: Select all
---- 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>
Ich habe versucht, die Textdatei sowohl in der Intellij -Idee als auch in Notepad zu öffnen, aber das Ergebnis ist derselbe: Der Inhalt ist codiert und unlesbar. Gibt es eine Codierungseinstellung, die ich [url=viewtopic.php?t=12045]ändern[/url] sollte? Wenn der BufferedWriter für eine Nummer in eine lesbare Klartextdatei in Java schreibt, muss [b] seine Write () -Methode einen String -Wert verwenden! Um den Wert in der Textdatei richtig zu lesen, muss er so verwendet werden: < /p>
bw.write(String.valueOf(points));
-Coces) zu sehen. In der Textdatei als ein Byte wie dieses 00110010 , was 50 in decimal ist, übersetzt jedoch in hex als 32 , was 2 in der ASCII -Tabelle ist. Anstatt in dem Dateitext 50 zu lesen, zeigen die Ergebnisse 2 , was völlig falsch ist. Auch hier kann es Ergebnisse wie in meinem Fall mit durcheinandergebrachten unlesbaren Symbolen erscheinen! 00110000 , die 53 48 in Decimal sind und in hex als 35 30 übersetzt, die in der ASCII -Tabelle 50 sind. Das Ergebnis ist also vollständig lesbar und genau: 50 Punkte .>