数组索引超出界限错误

时间:2012-11-27 00:24:00

标签: java

好的,所以我的代码错误,试图计算数组中每个整数的数量。所以我不知道如何解决它。我在底部的while循环上得到错误。任何帮助,将不胜感激。感谢。

            if (ndx != array.length)
                while (array[ndx] == array[ndx + 1])
                    ndx++;

2 个答案:

答案 0 :(得分:1)

在外部for循环的最后一次迭代中,ndx比array.length少一个,所以当你调用array [ndx + 1]时,这相当于array [array.length],它超出了界限,因为数组从0开始索引。将底部if语句更改为:

if (ndx != array.length-1)

应该做的伎俩。

它也在最后的while循环中递增ndx,所以应该有一个条件来检查它:

while(ndx != array.length-1 && array[ndx]==array[ndx+1]) 

既然你现在处理了array.length-1条件,你就可以摆脱上面那行中的那个条件。 希望有所帮助!

答案 1 :(得分:0)

由于这行代码,你得到了例外:

while (array[ndx] == array[ndx + 1])

在循环的最后一次迭代中,ndx等于array.length - 1

当您尝试访问array[ndx + 1]时,您正试图访问超出范围的数组索引。

您应该将while循环上方的 if语句更改为:

if (ndx != array.length - 1)