Problem beim Schreiben einer Nummer in eine lesbare Klartextdatei in Java [geschlossen]Java

Java-Forum
Anonymous
 Problem beim Schreiben einer Nummer in eine lesbare Klartextdatei in Java [geschlossen]

Post by Anonymous »

Ich habe ein Problem, das Textdateien in Java generiert. Ich habe ein einfaches Spiel mit farbigen Bällen gemacht, und wenn zwei gleiche Farbbälle kollidieren, steigt die Punktzahl jedes Mal mit 5 Punkten. Ich versuche, die Punktzahl für das Laden zu speichern, wenn ich ein neues Spiel in einer "points.txt" -Datei starten kann. Java erstellt eine "points.txt" -Datei, aber sie besteht nur aus unlösbaren Symbolen.

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));
UPDATE 2: [/b] Nach einem Vorschlag eines anderen Benutzers habe ich einen Hex -Editor verwendet, um den Unterschied zwischen BW.Write (Punkte) und bw.write (String.Valueof (Punkte))
-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 .>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post