您好我正在尝试使用arraylist创建一个pascal三角形,在下面的代码中获取第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);
}
}
}
答案 0 :(得分:1)
在迭代列表时无法修改列表。
您i
是g
上的迭代器。在循环结束时,当你执行g.add(tmp)
时,它会使迭代器无效,并且下次尝试使用它时,会出现异常。
我会建议一种方法来为你修复它,但是你选择的变量名称很糟糕,我不知道你的代码在做什么,而且我太懒了,无法弄明白。我认为,只需摆脱i
并将temp = i.next()
替换为g.get(ii)
即可。