Kann ich mein Programm so schreiben?

Javanoob199

Mitglied
Erweitere die Klasse LectureWithSortAlgorithms um eine Methode countAndCompareSortByName(), die folgendermaßen sortiert: • Es wird ein Feld sortedStudents mit dem Basistyp Student angelegt, das die Länge des Felds students besitzt. • Für jedes über students erreichbare Student-Objekt stud wird die Zahl count derjenigen Student-Objekte in students ermittelt, deren Name kleiner als der von stud ist. • Das Objekt stud wird im Feld sortedStudents an dem Index count abgelegt. Ist diese Position schon belegt, so treten Namen doppelt auf. Überlege, wo stud dann abgelegt werden kann. • Am Ende muss das Attribut students auf das nun sortierte Feld sortedStudents gesetzt werden.

Hallo, ich musste diese Aufgabe lösen und habe folgendes Programm geschrieben. Könnte mir einer sagen, ob ich die Aufgabe richtig gelöst habe oder welche Fehler ich gemacht habe. ich bedanke mich schon im voraus für jede Hilfe🙂.

Java:
public void countAndCompareSortByName()
    {
        Student[] sortedStudents= students;
        int count=0;
        for ( int stud=0; stud<students.length;stud++)
        {
            if ( students[stud].hasGreaterName(students[stud+1]))
            {
                count++;
                if (sortedStudents[count]==null)
                {
                 students[stud]=sortedStudents[count];
                }
                else
                {
                 students[stud]=sortedStudents[count+1];
                }
                count=0;
            }
        }
        students=sortedStudents;
    }
 
In der 3.Zeile ? Oder ist das schon nicht richtig 🙁
Ja, es ist nicht das, was in der Aufgabe steht. Lies noch mal aufmerksam.

Zum Vergleich, was du gerade machst: "Es wird ein Feld sortedStudents mit dem Basistyp Student angelegt, dem die Referenz auf das Feld students zugewiesen wird."
 
Zuletzt bearbeitet:
Ich habe mich nochmal intensiver mit der Aufgabe beschäftigt und kam dann zu diesem Ergebnis. Ist das so richtig ?



Java:
public void countAndCompareSortByName()
    {
        Student[] sortedStudents= new Student[students.length];
        int count=0;
        for ( int i=0; i<firstUnused;i++)
        {
            placeStudentIn(sortedStudents,students[i]);
        }
        students=sortedStudents;
    }
   
    public void placeStudentIn( Student[] sortedStudents, Student student)
    {
        int index= countSmallerStudents(student);
        while ( sortedStudents[index]!= null)
        {
            index++;
        }
        sortedStudents[index]=student;
    }
    public int countSmallerStudents(Student stud)
    {
        int count=0;
        for ( int i=0; i<firstUnused; i++)
        {
            if (stud.hasGreaterName(students[i]))
            {
                count++;
            }
        }
        return count;
    }
 

Zurück
Oben