检查“索引越界”的最佳做法和解决方案以下解决方案有效,但感觉非常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");
}
}
答案 0 :(得分:0)
编辑:Java是按值传递的。这意味着如果将“index”变量传递给函数,外部变量将不会受到函数内部执行的更改的影响。
所以你必须保持索引var class-scoped,比如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;
}
对于previouPerson也是如此,只需使用index--
;
顺便说一下,如果你将索引保存在消费者类中,在这个对象之外,你可以得到整个List并在消费者类中迭代它......
答案 1 :(得分:0)
我发现通过使用局部变量来跟踪Arraylist索引。我能够有两种方法来处理移动思考ArrayList。有一个用于当前输出位置。
if(arrayPosition < thePeople.size() - 1)