使用ArrayList的Pascal三角形

时间:2015-12-08 23:20:39

标签: java exception arraylist

您好我正在尝试使用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);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

在迭代列表时无法修改列表。 您ig上的迭代器。在循环结束时,当你执行g.add(tmp)时,它会使迭代器无效,并且下次尝试使用它时,会出现异常。

我会建议一种方法来为你修复它,但是你选择的变量名称很糟糕,我不知道你的代码在做什么,而且我太懒了,无法弄明白。我认为,只需摆脱i并将temp = i.next()替换为g.get(ii)即可。