【发布时间】:2011-01-13 05:02:22
【问题描述】:
我正在尝试根据我存储在另一个带有整数(结果)的 arrayList 中的值,对带有字符串(PlayersNames)和 imageIcons(PlayersIcons)的 ArrayList 进行排序。 如您所见,我得到一个 indexOutOfBoundsException 但我不明白为什么。也许晨曦让我看不到平淡的事物。
ArrayList<String> PlayersNames=new ArrayList<String>;
ArrayList<ImageIcon> PlayersIcons=new ArrayList<ImageIcons>;
public void sortPlayers(ArrayList<Integer> results){
String tmp;
ImageIcon tmp2;
for (int i=0; i<PlayersNames.size(); i++) {
for (int j=PlayersNames.size(); j>i; j--) {
if (results.get(i) < results.get(i+1) ) { //IndexOutOfBoundsException!
tmp=PlayersNames.get(i+1);
PlayersNames.set(i+1,PlayersNames.get(i));
PlayersNames.set(i,tmp);
tmp2=PlayersIcons.get(i+1);
PlayersIcons.set(i+1,PlayersIcons.get(i));
PlayersIcons.set(i,tmp2);
}
}
}
}
【问题讨论】:
-
很明显,您将超出结果列表的末尾,但您尚未发布调用 sortPlayers() 的代码,因此我们无法确定该列表应该有多大。它与 PlayersNames 的大小相同吗?如果是这样,那么循环的最后一次迭代,当 i == PlayersNames.size() - 1 时,将导致你超出界限,因为尝试调用 results.get (i + 1) 对结果列表。