尝试在 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<>();
我是 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<>();