您好,我正在尝试使用 arraylist 创建一个帕斯卡三角形,在下面的代码第 25 行中出现并发修改异常,请帮忙,我是使用 arraylist 的新手。 第 25 行是 .. temp = i.next();
public class PascalT {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
System.out.println("enter number");
int inp = s.nextInt();
s.close();
ArrayList<ArrayList<String>> g = new ArrayList<ArrayList<String>>(inp);
ArrayList<String> t1 = new ArrayList<>();
t1.add("1");
t1.add("1");
g.add(t1);
int ii = 0;
ArrayList<String> temp;
Iterator<ArrayList<String>> i = g.iterator();
while (i.hasNext() & ii < inp) {
temp = i.next();
Iterator<String> i2 = temp.iterator();
ArrayList<String> tmp = new ArrayList<String>();
tmp.add("1");
String temp2 = "";
while (i2.hasNext()) {
temp2 = Integer.toString(Integer.parseInt(i2.next())
+ Integer.parseInt(i2.next()));
tmp.add(temp2);
}
tmp.add("1");
g.add(tmp);
tmp.clear();
ii++;
}
for (ArrayList<String> al : g) {
System.out.println("line");
String row = "";
for (String sss : al) {
row = row + " " + sss;
}
System.out.println(row);
}
}
}
最佳答案
您无法在迭代列表时修改列表。
i
是 g
上的迭代器。在循环结束时,当您执行 g.add(tmp)
时,它会使迭代器无效,下次尝试使用它时,您会收到异常。
我会建议一种方法来为您修复它,但是您选择的变量名称很糟糕,我不知道您的代码在做什么,而且我也懒得弄清楚。我认为,简单地摆脱 i
并用 g.get(ii)
替换 temp = i.next()
应该可以解决问题。
关于java - 使用 ArrayList 的帕斯卡三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167971/