Posiadam w programie pętle, która powinna działać w 100%, ponieważ wiele razy używałem identycznej.
Kod: http://4programmers.net/Pastebin/5863
Działa to w taki sposób.
Posiadam panel z możliwościami wybory posortowania bazy filmów. Wybieram sobie np, gatunek "horror", i chcę posortować według oceny. Potem ogarniam Listę i wysyłam ją argumentem do metody showRanking(), aby powyświetlać odpowiednio JButton i JLabel. Lista posiada tylko 1 element, ponieważ w bazie posiadam tylko jeden film tego gatunku. Czyli rozmiar Listy wynosi 1. W pętli for ustawiam int i = 1 i warunek i < listSortMovie.size()+1, ponieważ nie zaczynam od 0, tylko od 1, dlatego dodaję do rozmiaru listy 1. W tym przypadku pętla powinna się wykonać tylko raz, a ona niespodziewanie po wykonaniu pętli raz i sprawdzeniu warunku leci kolejny raz, mimo że i = 2 nie jest mniejsze od size(1)+1. W debugerze jasno jest napisane, że rozmiar listy wynosi size:1, a po wykonaniu pętli 'i' wynosi 2.
Czyli i(2) równa się 1(list size) + 1, koniec powinno zostawić pętle, a to idzie kolejny raz i przez to, że lista nie ma więcej elementów zaczyna wywalać wyjątki
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
Wie ktoś, co można z tym zrobić?
Na chama jak wpisałem
if(i == 2)
break;
to działało bardzo dobrze.