0

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

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

2 回答 2

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 条件,因此您可以摆脱上述行中的 if 条件。希望有帮助!

于 2012-11-27T00:42:22.130 回答
0

由于这行代码,您会得到异常:

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

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

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

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

if (ndx != array.length - 1)

于 2012-11-27T00:44:25.673 回答