Verständnis frage zum return wert eines Arrays

Status
Nicht offen für weitere Antworten.

eRiF

Mitglied
Java:
public class ArraySort
{
    public static char[] liste_sortiert(char array[], int n, boolean f)
    {
        
        char temp; 
        
        if(f)
        {
           for (int i=0; i < array.length-1; i++)
            {
                for (int j=array.length-1; j > i; j--)
                {
                    if (array[j-1] > array[j])                 
                    {
                        temp = array[j-1];                
                        array[j-1] = array[j];                
                        array[j] = temp;                   
                    }
                }
            }
        }
        else
        {
            
            for (int i=0; i < array.length-1; i++)
            {
                for (int j=array.length-1; j > i; j--)
                {
                    if (array[j-1] > array[j])                 
                    {
                        temp = array[j-1];                
                        array[j-1] = array[j];                
                        array[j] = temp;                   
                    }
                }
            }
        }
        
        
        return array;
    }
    
    public static void liste_ausgeben(char array[], int n)
    {
        for(int i = 0; i < n;i++)
        {
            System.out.print(array[i] + ", ");
        }
        System.out.println();
    }
    
    public static void main(String[] args)
    {
        final int n = 10; // Anzahl der Elemente festlegen
        char a [] = new char [n]; // Array a mit n Feldern
        char b [] = new char [n]; // Array b mit n Feldern
        char c [] = new char [n]; // Array c mit n Feldern
        
        // Array a vorbesetzen
        a[0]='A'; a[1]='D'; a[2]='?'; a[3]='e'; a[4]='x';
        a[5]='6'; a[6]='Z'; a[7]='3'; a[8]='8'; a[9]='M';
        
        System.out.print("Elemente von a: ");
        liste_ausgeben(a,n); //Ausgabe von a
        
        b=liste_sortiert(a,n,true); //b bekommt Elemente von a aufsteigend sortiert
        c=liste_sortiert(a,n,false); //b bekommt Elemente von a absteigend sortiert
        
        System.out.print("Elemente von a: ");
        liste_ausgeben(a,n); //Ausgabe von a
        
        System.out.print("Elemente von b: ");
        liste_ausgeben(b,n); //Ausgabe von b
        
        System.out.print("Elemente von c: ");
        liste_ausgeben(c,n); //Ausgabe von c
        
    }

}


Damit sollte er eigentl. ja das ausgeben:
Elemente von a: A, D, ?, e, x, 6, Z, 3, 8, M,
Elemente von b: 3, 6, 8, ?, A, D, M, Z, e, x,
Elemente von c: 3, 6, 8, ?, A, D, M, Z, e, x,


aber Ausgeben tut er mir das und ich versteh nicht ganz warum 🙁
Elemente von a: 3, 6, 8, ?, A, D, M, Z, e, x,
Elemente von b: 3, 6, 8, ?, A, D, M, Z, e, x,
Elemente von c: 3, 6, 8, ?, A, D, M, Z, e, x,
 
Zuletzt bearbeitet:
char ist eigentlich ein int.
Zahlen kommen vor Sonderzeichen, Sonderzeichen kommen vor Großbuchstaben und Großbuchstaben vor Kleinbuchstaben 😉
Das gute alte ANSI, denn am Anfang gab es keine Kleinbuchstaben, die kamen erst später...
 
Nee nee daru geht es nicht sondern eher warum er mir
die Elemente von a auch in sortierter reihenfolge ausgibt.

obwohl ich ja a eigenl. gar nicht soriert habe

das ist eher meine frage
 
Das Problem ist das du dein char a [] als Referenz übergibst und diese auch umsortiert wird, und du damit die ganze Zeit weiterarbeitest!
Am ende verweisen a, b und c auf das selbe char[]!
 
oder was mir auf die schnelle einfallen würde wäre ein clone()

also in deinem liste_sortiert
Java:
char[] newarray = array.clone();

und dann mit newarray weiterarbeiten!

aber System.arraycopy ist glaub ich besser!
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Zurück
Oben