我在java中运行for-each-loop时出现ArrayOutOfBounds错误

时间:2014-02-23 21:25:21

标签: java arraylist

我正在编写一个代码,该代码通过一个名为values的给定数组列表查看并返回True如果发现我已经将它用于for循环和while循环但是无法弄清楚如何获取for-each循环工作。这就是我给你的错误。

编辑:错误显示“java.lang.IndexOutOfBoundsException:索引:642327,大小30590(在java.util.ArrayList中)

public String twoforEachFoundIt(ArrayList<Integer> values, int number){
    for(int i:values) {
         if (values.get(i)== number){
            return "True";
        }
    }
    return null;
}

4 个答案:

答案 0 :(得分:1)

由于foreach 正在迭代ArrayList values的元素,您必须将number与实际元素进行比较:

for (int i : values) {
     if (i == number){
        return "True";
    }
}

如果要使用索引,请使用简单的for

for(int i = 0; i < values.size(); i++) {
     if (values.get(i) == number){
        return "True";
    }
}

答案 1 :(得分:0)

foraech为您提供数组values的内容,而不是索引。您可以简单地比较:

if (i == number){
    return "True";
}

答案 2 :(得分:0)

变量'i'具有元素的值而不是索引。正确的方法是:

if ( i== number)
return "true"

答案 3 :(得分:0)

当您在列表上进行迭代时,您会将列表的内容放入i。然后,您将i用作索引添加到列表中。

您可以直接比较i

if (i == number)
    return "True";

作为备注,您可能希望更改功能以返回boolean而不是String ...