Sortieren/Suche klappt nicht ganz (String Array)

Tipp Ex

Mitglied
Hallo Leute,
ich habe mal wieder ein Problem mit meinem Programm.
Ich habe ein zweidimensionales String Array (hier konkret 5 x 4).
Enthalten sind Kundennr.,Vorname,Nachname,Ort.
Das Array:
Java:
String kundendatensatz[][] = {
                              {"2014","Wolfdreher","Richard","Berlin"},
                              {"4510","Pawlosky","Robert","Leipzig"},
                              {"0121","Kraft","Tanja","Chemnitz"},
                              {"6346","Zeiss","Karl","Potsdam"},
                              {"1332","Behringer","Luisa","Magdeburg"}
                            };

Das Sortieren klappt fast.
Für aufsteigend: Nr,Vorname und Ort funktioniert es,aber für den Nachnamen funktioniert es nicht.
Für absteigend funktioniert alles.
Fehlermeldung gibt's keine.

Hier meine Methode:

Java:
public static void Sortieren(String[][] data, int index, boolean aufsteigend)
    {
        int pos, posMin, posMax;
        String min, max;        
        String [] merkeZeile = new String[4];        
        
        //kleinste Position merken und vertauschen
        for (int i = 0; i < data.length; i++)
        {
            if (aufsteigend)
            {            
                posMin = i;            
                min = data[i][index];
                for (pos = i + 1; pos < data.length; pos++)
                {                
                    if (data[pos][index].compareTo(min) < 0)
                    {
                        min = data[pos][index];
                        posMin = pos;                    
                    }                
                    //Vertauschen
                    for (int k = 0; k < merkeZeile.length; k++ )
                        merkeZeile[k] = data[i][k];
                    for (int k = 0; k < data[i].length; k++ )
                        data[i][k] = data[posMin][k];
                    for (int k = 0; k < data[i].length; k++ )
                        data[posMin][k] = merkeZeile[k];  
                }                
            } 
            else if (!aufsteigend)
            {
                posMax = i;
                max = data[i][index];
                for (pos = i + 1; pos < data.length; pos++)
                    if (data[pos][index].compareTo(max) > 0)
                    {
                        max = data[pos][index];
                        posMax = pos;
                    }
                for (int k = 0; k < merkeZeile.length; k++ )
                    merkeZeile[k] = data[i][k];
                for (int k = 0; k < kunden[i].length; k++ )
                    data[i][k] = data[posMax][k];
                for (int k = 0; k < kunden[i].length; k++ )
                    data[posMax][k] = merkeZeile[k];     
            }
        }

Zudem möchte ich das Array nach einem Namen durchsuchen und mir dementsprechend den gefundenen Kunden ausgeben lassen (mit allen Daten als Array also Nr,Vorname,Nachname,Ort).
Hier mein Ansatz:

Java:
public static String[] Suche(String[][] data, String name)
    {
        String[] found = new String[4]; 
        for (int i = 0; i < data.length; i++)        
            for (int j = 0; j < data[0].length; j++)
                if (data[i][j].equals(name))
                    found = data[i];                    
        return found;
    }
Hier spuckt er mir Array Grenzen überschritten.Okay,aber wieso?
Es geht doch von einmal von 0 bis 4 und 0 bis 3.
data ist doch das oben angegebene array.
Das geht doch auch von 0 bis 4 und von 0 bis 3. :bahnhof:

Ich danke für's Lesen,
Gute Nacht!
 
Zuletzt bearbeitet:
Hi,

D-- Ne sorry, hier stand doch nix richtiges ;D

Wo kommt die IOOBE?

Generell sollte man in solchen Fällen debuggen oder entsprechende Ausgaben einbauen.

Gruß,

Martin
 
Tatsache,an's Debuggen habe ich gar nicht gedacht.:lol:
Habe jetzt beide Fehler gefunden.
Beim Sortieren hat das Programm schon in der Schleife vertauscht und dann wieder zurück in dem einem Fall,wo es nicht geklappt hat.
Danke!
 

Neue Themen


Zurück
Oben