ich bin Java Anfänger und arbeite an einem Projekt in dem ein Hamster (paule) simuliert wird der Körner (grain) einsammeln soll. Es sollen sich die Anzahl aller Körner die Pro gelaufenen Schritt eingesammelt wurden gemerkt werden. Diese sollen einer ArrayList hinzugefügt und anschließend sortiert werden. Hierfür habe ich eine ArrayList erstellt die Integer Werte (für die Anzahl der eingesammelten Körnern pro gelaufenen Schritt) speichert und einen grainCounter der zählt wieviele Körner pro Schritt gesammelt wurden. Das speichern der Körneranzahl pro Schritt funktioniert, jedoch möchte ich dass die ArrayList mit allen Integer Werten der Größe nach sortiert wird was ich mit Collection.sort versucht habe. allerdings wird mir nach Ausführung der Operation meine ursprüngliche Liste und nicht die sortierte auf der Konsole ausgegeben. Vorab schonmal danke für euere Hilfe.
Das Problem ist, dass Du dir alles in lokalen Variablen merkst:
Java:
protectedvoidrun(){List<Integer> grains =newArrayList<>();// Lokale Variable!// Viel gekürzt ....run();// Rekurisver Aufruf -> hier wird dann eine neue lokale Variable verwendet ...// Viel gekürzt ....}
Was Du machen kannst ist, dass du statt einer lokalen Variable eine Instanzvariable nutzt. Dann verwenden alle Aufrufe von run die gleiche Instanz von ArrayList.
Oder wenn es Probleme mit Initialisierung und co gibt (Sollte aber nicht der Fall sein, denn es sieht so aus, als hättest Du einen Thread oder Runnable und den wirst Du wohl nicht mehrfach verwenden ohne ihn neu zu erstellen), teilst Du es auf in zwei Methoden:
Als kleine Ergänzung: Du hast in jedem rekursiven Run Aufruf eine Ausgabe der Liste. Somit hast Du keine unsortierte Liste ausgegeben bekommen sondern Du hast lauter einzelner Listen mit jeweils einem Element ausgegeben bekommen. Und das in verkehrter Reihenfolge, da die Ausgabe erst nach dem rekursiven Aufruf erfolgte....
Also erstes Feld: 1 KOrn aufgehoben, also enthält die Liste nur die 1.
1. Rekursion: zweites Feld, mal 2 Körner angenommen: Also liste hier enthält die 2 (Eigenständige Liste wie schon erläutert)
2. Rekursion: drittes Feld, mal 3 Körner angenommen: Also Liste bekommt die 3.
--> Jetzt kein Feld mehr da, also keine weitere Rekursion
2. Rekursion: Ausgabe: "3" und Rücksprung
1. Rekursion: Ausgabe "2" und Rücksprung
Hauptaufruf: Ausgabe der "1" und fertig
Hallo?!? Kann mir mal einer verraten, warum beim Beitrag des TE nicht steht, dass er bearbeitet wurde? Zuerst hing da ein PDF dran, das bei meinem Versuch, es anzuzeigen, nicht mehr gefunden werden konnte. Nach einem Reload war der Anhang entfernt und der Kommentar bestand nur noch aus dem Text ohne Code.
Hallo?!? Kann mir mal einer verraten, warum beim Beitrag des TE nicht steht, dass er bearbeitet wurde? Zuerst hing da ein PDF dran, das bei meinem Versuch, es anzuzeigen, nicht mehr gefunden werden konnte. Nach einem Reload war der Anhang entfernt und der Kommentar bestand nur noch aus dem Text ohne Code.