gemischtes Array sortieren (String, Integer, String)

Horsten2

Mitglied
Hallo,

ich muss eine Textdatei einlesen, diese eingelesenen Werte sortieren und danach wieder in eine Textdatei ausgeben.
Die Ein- und Ausgabe funktioniert schon. Nur beim sortieren hab ich noch Probleme, weiß auch nicht so recht wie ich anfangen soll.

Die Textdatei hat folgenden Inhalt:
01.01.2010;2;Nordwind
02.01.2010;-2;Sturm-Nordost
03.01.2010;-6;Ostwind
04.01.2010;1;Westwind
05.01.2010;4;Windstille
06.01.2010;0;Nordwind
07.01.2010;-5;Ostwind
08.01.2010;-6;Nordwind
09.01.2010;-4;Windstille

Ich hab die Token schon getrennt, die Ausgabe ist also schon ohne das Semikolon.

hab jetzt folgenden Quelltext geschrieben:

Code:
public void einlesen_ActionPerformed(ActionEvent evt) {
  BufferedReader br;
  FileReader eStrom;
  String zeile;

  try{
  eStrom=new FileReader("Temperaturen.txt");
  br=new BufferedReader(eStrom);
  while ((zeile=br.readLine())!=null){
    StringTokenizer feld = new StringTokenizer(zeile,";");
    dateWerteString[i]=feld.nextToken();
    tempWerteString[i]=feld.nextToken();
    windWerteString[i]=feld.nextToken();
    tempWerteDouble[i]=Double.parseDouble(tempWerteString[i]);
    i++;
  } //Ende von While
  
  br.close();
  n=i;
  
  }//Ende von Try
  

  catch(IOException e){
    list1.add("Fehler beim Lesen der Datei");
  } //Ende von Catch
  
  ausgeben();
  }//Ende Button Einlesen
  
  private void ausgeben(){
    for (int i=1; i<n;i++){
      list1.add(dateWerteString[i]+" "+tempWerteString[i]+" "+windWerteString[i]);
    }
  }

Wie ist es möglich nun nach der Temperatur zu sortieren.
 

fastjack

Top Contributor
Mach Dir aus den CSV-Zeilen Objekte und füge diese in die Liste an. Der Comparator sollte helfen auf das Temperatur-Attribut sortieren.
 

Horsten2

Mitglied
So hab jetzt mal das hier geschrieben, aber hat noch nen Fehler bei dem ich die Ursache einfach nicht finde.:

Code:
public void sortieren_ActionPerformed(ActionEvent evt) {
    // Sortieren

    for (int i=1;i<n;i++){

       for (int j=n-1;j>=i;j--){
         if (tempWerteDouble[j-1]>tempWerteDouble[j]){
            int x=tempWerteDouble[j-1];
            tempWerteDouble[j-1]=tempWerteDouble[j];
            tempWerteDouble[j]=x;
         }
       }
    }
  }

Bei der Zeile zeigt er mir noch nen Fehler:

int x=tempWerteDouble[j-1];

Weiß jmd. woran das liegen könnte???
 

Horsten2

Mitglied
Ja sorry dass ich als Java Anfänger die Begriffe casten und Comparator nicht kenne.
Verstehe trotzdem nicht warum man hier im Forum gleich dafür ausgelacht wird. :(

Echt soziale Community hier. -.-
 

Oben