gesplitteter String lässt sich nicht mit String vergleichen

NicoVIII

Grünschnabel
Hallo,
ich programmiere schon eine Weile an einem Siedler von Catan-Klon (2D) in Java. Nun habe ich folgendes Problem:
Ich habe einen Konverter eingebaut, der ältere Savegames erkennt und automatisch die nötigen Angaben dazuschreibt, damit das Programm die Saves lesen kann. Dazu habe ich eine Versionsangabe in die Savedatei geschrieben, die vom Konverter eingelesen werden soll, damit er weiß, was genau er noch dazu schreiben soll.

In der Datei sieht das Ganze so aus:
"Version: v0.5.1"

Hiermit versuche ich an die Versionsnummer zu kommen und diese abzugleichen, doch er überspringt beide If-Abfragen IMMER:

Code:
//Erkennen neuerer Versionen
if (zeile[0].split("v")[1].equals("0.5.1"))
    saveVersion = V051;
if (zeile[0].split("v")[1].equals("0.5.2"))
    saveVersion = V052;

zeile[0] ist die erste eingelesene Zeile. Diese wird auch komplett richtig eingelesen (mit
Code:
System.out.println()
überprüft).
Auch
Code:
zeile[0].split("v")[1]
entspricht "0.5.1" aber TROTZDEM sagt er, dass diese beiden Strings nicht identisch sind.
Weiß jemand wodran das liegt?

Danke schonmal im Vorraus :)
 
Zuletzt bearbeitet:
1. Bist du sicher, dass da nicht noch ein \t, \r, \n oder ähnliches am Ende der Zeile hängt?
2. Ich würde dazu nicht split verwenden (zumal du es mehrfach aufrufst). Nimm doch einfach contains

Java:
zeile[0].contains("v0.5.1")

Oder wenn du willst, extrahiere die Versionsnummer mittels regulärem Ausdruck.
 
Ich würde dazu nicht split verwenden (zumal du es mehrfach aufrufst). Nimm doch einfach contains
@CPoly
Vielen Dank! Jetzt läuft es einwandfrei :) Da ich mit contains noch nichts zutun hatte, habe ich gar nicht dran gedacht zu überprüfen, ob der String enthalten ist, aber du hast Recht, ist natürlich einfacher. ;)

@Fabio
Ich würde natürlich trotzdem gerne den Fehler finden und ich denke dass da tatsächlich etwas nicht sichtbares fehlt, wie CPoly bereits erwähnte. Ich verwende zum Speichern folgenden Code:
Code:
f.write("Version: v0.5.2");
f.write(Character.LINE_SEPARATOR);
f ist in diesem Fall ein Filewriter.
 
Warum speicherst du denn die Strings in einem FileWriter? Willst du das in die Datei dann direkt reinschreiben? Oder wofür machst du das?
 
Ja, ich schreibe mit dem Filewriter die Savedatei, wenn das Spiel abgespeichert wird.
Code:
FileWriter f = new FileWriter(pfad+".svc");
Dann werden alle erforderlichen Daten hineingeschrieben und abschließend:
Code:
f.flush();
f.close();
 
@CPoly
Tatsächlich benutze ich zum Lesen den BufferedReader schon, nur zum Schreiben noch den FileWriter, werde dies jetzt noch ändern.

@Fabio
Der Konverter durchläuft 3 Phasen:
-Das Laden der Datei in das String-Array zeile[]
-Das Erkennen der Version der Datei
-Und das anschließende Neuschreiben der "Save.svc"

Jaa, der Konverter erkennt, welche Version vorliegt und speichert dann die bearbeitete Version.
Aber ich versteh jetzt nicht ganz wodrauf du hinauswillst!?
 
Ok, nein tut mir leid, ich habe nur gedacht, dass du die Erkennung der Versionsnummer aus dem FileWriter raus holst. :)
Stand grad ein bischen auf dem Schlauch.
 
Macht ja nichts ^^ Passiert jedem Mal.
Trotzdem danke, dass du versucht hast, zu helfen und zu verstehen, was ich genau will :)
 
Zurück