我遇到这种麻烦。它只会按顺序正确显示第一个文件。有谁看到我做错了什么?我一直试图弄清楚好几个小时,只是看不出我做错了什么。
public void sort() {
int i; //loop control
int last; //last position in the arraylist
int max; //position where last alphabetical filename is found
max = 0; //largest position so far is first, since i haven't checked
//I thought i should start at the end and work my way down
for(last = fileList.size()-1; last >= 0; last--) {
for(i = 0; i < fileList.size(); i++) {
if(fileList.get(max).getFileName().compareTo(fileList.get(i).getFileName()) > 0)
max = i;
}
//swap pixfile in last position with the last alphabetical
Pixfile tempPix = fileList.get(last);
fileList.set(last, fileList.get(max));
fileList.set(max, tempPix);
//i thought i would repeat until last = 0 and the arraylist is sorted
}//end for
}
答案 0 :(得分:1)
内部for循环应该是for(int i = 0; i <= last; i++)
因为你从尚未排序的东西中选择最好的。最后你已经在外部循环的前一次迭代中进行了排序。
另外,你没有在每次迭代中重置max
的值,所以在内部for循环之前,写max = 0;
另外,如果你懒得编写排序算法,你可以随时使用Arrays.sort()
或Collections.sort()