Messwerte einlesen

DeVolt

Mitglied
Hallo,

ich will aus einer Datei folgende Messwerte auslesen:
14.12.2012, 8.0;
15.2.2013, 13.0;
16.2.2013, 13.4;
17.2.2013, 14.5;

Ich lese erst eine Zeile ein und nutze dann die Methode split(string,int), um daraus ein String-Feld zu machen. Leider weiß ich nicht, was ist, wenn ich mehrere Trennzeichen habe. In meinem Fall sind es "." und ",". Erschwerend kommt hinzu, dass im Double-Wert ja auch ein "." enthalten ist.

Habt ihr eine Idee?
Hier mein Code:
Java:
private void leseWerte()
    {
        Messwert einWert; //Hier sollen die Werte rein
        //Datei öffnen und Buffered-Reader Objekt erstellen
        try (FileReader  eineEingabeDatei = new FileReader("messungen.txt");
              BufferedReader eingabeDaten = new BufferedReader(eineEingabeDatei))
            { 
              String zeile = eingabeDaten.readLine();
              while (zeile  != null)
              {
                  String trenner = ",";
                  String[] zeileAlsFeld = zeile.split(trenner, -1);

                  //String-Felder wieder als Int bzw. Double casten
                  int tag = Integer.parseInt(zeileAlsFeld[0]);
                  int monat = Integer.parseInt(zeileAlsFeld[1]);
                  int jahr = Integer.parseInt(zeileAlsFeld[2]);
                  double temperatur = Double.parseDouble(zeileAlsFeld[3]);

                  //Alle Variablen als Parameter an übergeben und das Objekt erzeugen
                  new Messwert(tag,monat,jahr,temperatur);
                  zeile = eingabeDaten.readLine();
              }
            }
            catch(IOException eineAusnahme)
            {
              System.out.println
                ("Fehlermeldung: " + eineAusnahme);
            }
       
       
    }
 
Warum liest du kein Datum ein? Es gibt dafür DateFormatter. Alles wird so und so mit ',' getrennt. Den Aufbau des Files musst du selbst kennen, wo liegt also das Problem?
 
Moin,

hmm, möglicherweise ist es ja nur eine Übung zum Splitten 😎
Das Problem liegt hier wohl in falschen Erwartungen
Java:
 String[]
zeileAlsFeld = zeile.split(trenner, -1);
Nach dem Split über ',' enthält "zeileAlsFeld " nur ZWEI Einträge, nicht VIER !!
==> zeileAlsFeld[0] = "14.12.2012"
==> zeileAlsFeld[1] = "8.0"
Jetzt kann aber "zeileAlsFeld[0]" über '.' gesplittet werden und sähe dann so aus:
neuesArray[0] = "14"
neuesArray[1] = "12"
neuesArray[2] = "2012"

Aber in der Tat wäre ein Einlesen als Datum eleganter (Stichwort zum Googlen: "string.format")

Gruß Klaus
 
Eigentlich ist es eine Übung, um das Einlesen und Schreiben von Dateien zu üben 🙂
Und Vorgabe ist auch, dass das Datum als drei int-Werte gespeichert werden muss!

@VfL_Freak
Dein Hinweis war sehr hilfreich. Aber ich glaube, man kann nicht über "." splitten, da es als regex für alle Zeichen steht. Ich habe es jetzt so gelöst:

Java:
                  String erstesTrennzeichen = ",";
                  String[] zeileAlsFeld = zeile.split(erstesTrennzeichen, -1);
             
                  String zweitesTrennzeichen = "[.]";
                  String[] datumAlsFeld = zeileAlsFeld[0].split(zweitesTrennzeichen, -1);
 

Neue Themen


Zurück
Oben