6 svar
274 visningar
civilingengör behöver inte mer hjälp
civilingengör 193
Postad: 13 maj 2022 20:32 Redigerad: 13 maj 2022 20:49

Sortera lista i bokstavsordning

Hej! Varför fungerar inte denna kod? Jag vill returnera en ny lista med namnen bokstavssorterare som finns i listan persons, vilket skall ske utan att ändra på den befintliga listan persons. Jag får felmeddelandet "index out of bounds" för index 0. Persons är en befintlig lista med person-objekt inskrivna som har ett nummer och ett namn.

Macilaci 2122
Postad: 13 maj 2022 22:28

Du får felmeddelandet för list.set(i,...).

list är nämligen tom (list.size()==0) och dokumentationen säger att du får IndexOutOfBoundsException i detta fall:

https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#set(int,%20E)

civilingengör 193
Postad: 14 maj 2022 07:19

Jag har nu skrivit om listan, men den verkar sortera i konstig ordning. Några förslag på vad felet kan vara?

Macilaci 2122
Postad: 14 maj 2022 08:32

I rad 24 borde du jämföra värdena från list, inte från person.

(Från och med rad 22 borde bu strunta i persons och bara arbeta med list.)

civilingengör 193
Postad: 14 maj 2022 09:56

Tack det funkade! Men varför fungerade det. Borde inte inte ge samma resultat att gå igenom den gamla listan?

Macilaci 2122
Postad: 14 maj 2022 13:24

Grundbulten i denna algoritm är att du efter n iterationer av den yttre loopen har de första n talen i arbetslistan redan i rätt ordning.
Om du jämför värden från den ursprungliga listan, men manipulerar arbetslistan, är detta inte sant längre.

civilingengör 193
Postad: 16 maj 2022 18:02

Tack så mycket för din hjälp och tid!

Svara
Close