ConcurrentModificationException使用迭代器循环时

时间:2015-06-27 02:29:01

标签: java

我使用了迭代器但是在调用时我似乎仍然得到修改异常 iterator.next()

public void render(Graphics g) {
    if(consoleShown) {

        int boxHeight = 0;

        Iterator<String> iterator = output.iterator();
        while(iterator.hasNext()) {
            boxHeight += ((int)writefont.getStringBounds(iterator.next(), frc).getHeight());
        }

        if(boxHeight > 225) {
            boxHeight = 225;
        }

        for(int i = offset; i < offset + 25; i++) { //Offset being the line from the list being displayed.
            if(i < output.size()) {
                //Inverse the range to reverse the order of the list being displayed.
                //The irriterator adds the new value to the beginning of the list and not the end to avoid exceptions.
                g.drawString(output.get((int)(Utils.inverseRange(i, output.size())) - 1), 10, (i - offset + 1) * (int)writefont.getStringBounds(output.get(i), frc).getHeight());
            }
        }

        g.drawLine(0, boxHeight + 3, game.getWidth(), boxHeight + 3);
        g.drawString(input, 10, boxHeight + 12);
    }
}

我的假设是我使用output.get(i)进一步向下访问列表,但我不认为我可以在这种情况下添加迭代器。

基本上我有一个字符串列表,每个字符串都有测量的字体高度并添加到整数。

1 个答案:

答案 0 :(得分:0)

您确定修改异常与迭代器有关吗?在那一行中有很多事情发生,还有其他一些可能出错的事情,与你的迭代器无关。

我建议将该行分成几行代码并将iterator.next()的结果分配给变量。