Java 无法看到IndexOutOfBoundsException

Java 无法看到IndexOutOfBoundsException,java,arraylist,Java,Arraylist,我正在转换一个为数组编写的方法,该方法用于查找从main传递的ArrayList的模式。在这条路上的某个地方,我碰到了一个错误。我确信这是一个明显的错误,但就是看不到它。我想再多看一眼 public static int getMode(ArrayList<Integer> a) { int i ,j ,ctr=0 ,wantedScore ,maxsofar ,position=0 ,mode; ArrayList<Integer> ctrArray =

我正在转换一个为数组编写的方法,该方法用于查找从main传递的ArrayList的模式。在这条路上的某个地方,我碰到了一个错误。我确信这是一个明显的错误,但就是看不到它。我想再多看一眼

 public static int getMode(ArrayList<Integer> a)
 {
  int i ,j ,ctr=0 ,wantedScore ,maxsofar ,position=0 ,mode;
    ArrayList<Integer> ctrArray = new ArrayList<>(a.size());
    for(i=0; 1< a.size(); i++)
    {
        wantedScore = a.get(i);
        for(j=i+1; j < a.size(); j++)
        {
            if(a.get(i)==wantedScore)
            {
                ctr++;

            }//End IF 
        ctrArray.add(ctr);

        }//End Inner Loop
    }//End Outer For Loop
    //Find highest value counter
    maxsofar=a.get(0);
    for(i=0; i< a.size(); i++)
    {
        if(ctrArray.get(i)>maxsofar)
        {
            maxsofar=ctrArray.get(i);
            position=i;
        }//End If
    }//End For Loop
    if(maxsofar>0)
        mode=a.get(position);
    else
        mode=-1;

    return mode;
}//End getMode
publicstaticintgetmode(arraylista)
{
int i,j,ctr=0,wantedScore,maxsofar,position=0,mode;
ArrayList ctrArray=新的ArrayList(a.size());
对于(i=0;1maxsofar)
{
maxsofar=ctrArray.get(i);
位置=i;
}//如果结束
}//循环结束
如果(最大值>0)
模式=a.get(位置);
其他的
模式=-1;
返回模式;
}//结束模式
如果数组列表包含值1、2、3,则得到的错误为: 线程“main”java.lang.IndexOutOfBoundsException中的异常:索引:3,大小:3(i=0;1 for(i=0; 1< a.size(); i++) 它应该是(i=0;i

的(i=0;1

它应该是(i=0;i

wow。好吧,我不敢相信我没看到!非常感谢你的帮助!我把这当作是我应该睡一觉的信号哈哈。好吧,我不敢相信我没看到!非常感谢你的帮助!我认为这是一个信号,我应该睡一觉哈,你为什么不用:
for(inti:a){…
为什么不用:
for(inti:a){…