我正在转换为数组编写的方法,用于查找从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
如果Array列表包含值1,2,3,我得到的错误是: 线程“main”中的异常java.lang.IndexOutOfBoundsException:Index:3,Size:3
答案 0 :(得分:5)
for(i=0; 1< a.size(); i++)
应为for(i=0; i< a.size(); i++)