尝试在 for 循环中更新嵌套的 ArrayList

Trying to update nested ArrayList within a for loop

我是 java 的新手,在尝试解决提示时我 运行 遇到了一个问题,可能是因为我对问题的本质缺乏了解,所以我找不到答案问题。我有一个由嵌套在另一个 ArrayList 中的整数组成的 ArrayList。我可以以完全相同的方式在循环外更新我的临时列表,但不能在循环内更新。当我打印 mainList 时,对于每个整数输入,我在 mainList 中收到一个空的 ArrayList。

import java.util.*;

public class Lock {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        ArrayList<ArrayList<Integer>> mainList = new ArrayList<>();
        ArrayList<Integer> tempList = new ArrayList<>();



        while(input.hasNextInt()) {

            for (int i = 0; i < 4; i++) {
                int n = input.nextInt();
                tempList.add(n);

            }
            mainList.add(tempList);
            tempList.clear();

        }
        System.out.println(mainList);

        input.close();

        int angleSum;


        for (ArrayList<Integer> integers : mainList) {

            //2 clockwise turns
            angleSum = 0;
            angleSum = angleSum + 720;

            //init values within nested <Int> ArrayLists
            int val1 = integers.get(0);
            int val2 = integers.get(1);
            int val3 = integers.get(2);
            int val4 = integers.get(3);

            //Continue until first number in Combination

            angleSum = angleSum + (9 * Math.abs(val1 - val2));



            //CounterClockwise turn
            angleSum = angleSum + 360;

            //Counter Clockwise until val3

            angleSum = angleSum + (360 - (9 * (39 - Math.abs(val2 - val3))));


            //Clockwise until val4
            angleSum = angleSum + (9 * Math.abs(val3 - val4));

            System.out.println(angleSum);

        }


    }
}

当您在 tempList 上调用 clear() 时,您删除了刚刚添加到 mainList 的列表实例中的内容。

您必须改为创建新实例,这样 mainList 中的现有项目才不会受到影响:

// tempList.clear();  //! wrong
   tempList = new ArrayList<>();