数组中的下一个和索引超出范围

Posted

技术标签:

【中文标题】数组中的下一个和索引超出范围【英文标题】:Next in array and index out of bounds 【发布时间】:2012-11-06 13:40:50 【问题描述】:

检查“索引越界”的最佳实践和解决方案是什么 以下解决方案有效,但感觉很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");
    

【问题讨论】:

【参考方案1】:

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

if(arrayPosition < thePeople.size() - 1)

【讨论】:

【参考方案2】:

编辑: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;
    

previuPerson 也是一样,使用index--

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

【讨论】:

使用您的解决方案,拥有 previousPerson 方法的正确方法是什么? 完全一样,但index--...我建议您发布更大的代码摘录,看看是否可以重新设计一点 我最初的想法是使用index--,但它没有用。 private ArrayList&lt;People&gt; thePeople; 我只有一个基本的构造函数,我将它们添加到数组中。

以上是关于数组中的下一个和索引超出范围的主要内容,如果未能解决你的问题,请参考以下文章

javascript数组中的索引超出范围

索引超出了 MSCORLIB.DLL 中的数组范围

数据源数组正确时 UICollectionView 中的“索引超出范围”错误

使用 insertRowsAtIndexPaths 时空数组的索引超出范围

将 Slider 值绑定到 EnvironmentObject 中的嵌套数组时,索引超出范围

致命错误:TableView 中的数组索引超出范围