由于某种原因,阵列列表中剩下的最后一个数字将不会打印,我也不知道为什么。请帮忙。 这是结果[88,10,6,4,2]
package com.company;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(4);
list.add(2);
list.add(6);
list.add(1);
list.add(88);
list.add(10);
ArrayList<Integer> tmp = new ArrayList<>();
int tmpNum = list.get(0);
int index = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) >= tmpNum) {
index = i;
tmpNum = list.get(i);
}
if (i == list.size() - 1) {
tmp.add(tmpNum);
list.remove(index);
i = 0;
index = 0;
tmpNum = list.get(0);
}
}
System.out.println(tmp);
}
}
答案 0 :(得分:1)
添加
tmp.add(tmpNum);
在循环后添加最后一个数字。
for (int i = 0; i < list.size(); i++) {
if (list.get(i) >= tmpNum) {
index = i;
tmpNum = list.get(i);
}
if (i == list.size() - 1) {
tmp.add(tmpNum);
list.remove(index);
i = 0;
index = 0;
tmpNum = list.get(0);
}
}
tmp.add(tmpNum);
System.out.println(tmp);
输出:
[88, 10, 6, 4, 2, 1]
未添加最后一个数字的原因是,一旦list
仅包含最后一个元素(在您上次调用list.remove(index)
之后),则将i
设置为{{1 }},但是循环的0
将其递增到i++
,因此循环结束而没有在1
上添加最后一个数字。
替代解决方案:
tmp