tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von CPoly
  • 1 Beitrag von CPoly
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
434
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    NicoVIII NicoVIII ist offline Rookie
    Registriert seit
    Aug 2011
    Ort
    NRW
    Beiträge
    9
    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 :
    1
    2
    3
    4
    5
    
    //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 :
    1
    
    System.out.println()
    überprüft).
    Auch
    Code :
    1
    
    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
    Geändert von NicoVIII (29.08.11 um 11:52 Uhr)
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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

    Code java:
    1
    
    zeile[0].contains("v0.5.1")

    Oder wenn du willst, extrahiere die Versionsnummer mittels regulärem Ausdruck.
    NicoVIII bedankt sich. 

  3. #3
    NicoVIII NicoVIII ist offline Rookie
    Registriert seit
    Aug 2011
    Ort
    NRW
    Beiträge
    9
    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 :
    1
    2
    
    f.write("Version: v0.5.2");
    f.write(Character.LINE_SEPARATOR);
    f ist in diesem Fall ein Filewriter.
     
    Sheldon Cooper:
    Es ist nur das dreidimensionale Denken, das die Vorstellungskraft beschränkt. Könnte ich mir die Hosen über den Kopf ausziehen? Natürlich nicht! Mein Körper ist im Weg! Aber wenn wir nun Zugang hätten zu höheren Dimensionen, könnten wir sie einfach durch die vierte Dimension hindurch um unseren Körper herumschlingen und dann müssten wir nie wieder die Hosen herunterlassen

  4. #4
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Warum speicherst du denn die Strings in einem FileWriter? Willst du das in die Datei dann direkt reinschreiben? Oder wofür machst du das?
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  5. #5
    NicoVIII NicoVIII ist offline Rookie
    Registriert seit
    Aug 2011
    Ort
    NRW
    Beiträge
    9
    Ja, ich schreibe mit dem Filewriter die Savedatei, wenn das Spiel abgespeichert wird.
    Code :
    1
    
    FileWriter f = new FileWriter(pfad+".svc");
    Dann werden alle erforderlichen Daten hineingeschrieben und abschließend:
    Code :
    1
    2
    
    f.flush();
    f.close();
     
    Sheldon Cooper:
    Es ist nur das dreidimensionale Denken, das die Vorstellungskraft beschränkt. Könnte ich mir die Hosen über den Kopf ausziehen? Natürlich nicht! Mein Körper ist im Weg! Aber wenn wir nun Zugang hätten zu höheren Dimensionen, könnten wir sie einfach durch die vierte Dimension hindurch um unseren Körper herumschlingen und dann müssten wir nie wieder die Hosen herunterlassen

  6. #6
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Nimm zum Schreiben http://download.oracle.com/javase/1....redWriter.html (newLine() anstatt Character.LINE_SEPARATOR) und zum Lesen http://download.oracle.com/javase/1,...redReader.html (readLine() anstelle von split(Character.LINE_SEPARATOR)).
    NicoVIII bedankt sich. 

  7. #7
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Aber die Überprüfung, welche Version das ist, die machst du doch schon früher, oder nicht?
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  8. #8
    NicoVIII NicoVIII ist offline Rookie
    Registriert seit
    Aug 2011
    Ort
    NRW
    Beiträge
    9
    @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!?
     
    Sheldon Cooper:
    Es ist nur das dreidimensionale Denken, das die Vorstellungskraft beschränkt. Könnte ich mir die Hosen über den Kopf ausziehen? Natürlich nicht! Mein Körper ist im Weg! Aber wenn wir nun Zugang hätten zu höheren Dimensionen, könnten wir sie einfach durch die vierte Dimension hindurch um unseren Körper herumschlingen und dann müssten wir nie wieder die Hosen herunterlassen

  9. #9
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    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.
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  10. #10
    NicoVIII NicoVIII ist offline Rookie
    Registriert seit
    Aug 2011
    Ort
    NRW
    Beiträge
    9
    Macht ja nichts Passiert jedem Mal.
    Trotzdem danke, dass du versucht hast, zu helfen und zu verstehen, was ich genau will
     
    Sheldon Cooper:
    Es ist nur das dreidimensionale Denken, das die Vorstellungskraft beschränkt. Könnte ich mir die Hosen über den Kopf ausziehen? Natürlich nicht! Mein Körper ist im Weg! Aber wenn wir nun Zugang hätten zu höheren Dimensionen, könnten wir sie einfach durch die vierte Dimension hindurch um unseren Körper herumschlingen und dann müssten wir nie wieder die Hosen herunterlassen

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 05.12.10, 23:07
  2. String splitten
    Von mafiamix im Forum .NET Café
    Antworten: 6
    Letzter Beitrag: 28.08.08, 18:26
  3. String splitten
    Von steve77 im Forum Java Grundlagen
    Antworten: 1
    Letzter Beitrag: 20.06.08, 14:57
  4. Antworten: 4
    Letzter Beitrag: 03.07.07, 14:19
  5. String splitten
    Von kevkev im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 23.08.05, 23:28

Stichworte