为什么不打印最后一个数字?

时间:2018-11-22 12:49:16

标签: java arraylist

由于某种原因,阵列列表中剩下的最后一个数字将不会打印,我也不知道为什么。请帮忙。 这是结果[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);
    }
}

1 个答案:

答案 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
相关问题