0

检查“索引越界”的最佳实践和解决方案是什么以下解决方案有效,但感觉很hacky。有没有更好的选择?

public void nextPerson(int index){ //Index is the current location in the arraylist
    try{
        System.out.println(thePeople.get(index++));
    }
    catch (IndexOutOfBoundsException e){
        System.out.println("At the end");
    }
}
4

2 回答 2

0

编辑:Java 是按值传递的。这意味着如果您将“索引”变量传递给函数,外部变量将不会受到函数内部执行的更改的影响。

所以你必须保持索引 var 类范围,如 List ...

public void nextPerson(){ 
    if (index>=0 && index<thePeople.size())
        System.out.println(thePeople.get(index++));
    } else {
        System.out.println("At the end");
    }
}

或传递它并返回它

    public int nextPerson(int index){ 
        if (index>=0 && index<thePeople.size())
            System.out.println(thePeople.get(index++));
        } else {
            System.out.println("At the end");
        }
        return index;
    }

上一个人也是如此,只需使用index--;

顺便说一句,如果你将索引保存在消费者类中,在这个对象之外,你可以获得整个列表并在消费者类中迭代它......

于 2012-11-06T13:45:45.673 回答
0

我通过使用局部变量来跟踪 Arraylist 索引发现了这一点。相反,我可以使用 2 种方法来处理 ArrayList 的移动思想。一个为当前位置用于输出。

if(arrayPosition < thePeople.size() - 1)
于 2012-11-06T15:46:49.627 回答