public static int[] squeeze(int[] ints) {
    int i;
    int[] temp;
    temp = new int[100];

    for (i = 0; i < ints.length; i++) {
      if (ints[i] != ints[i + 1]) {
        temp[i] = ints[i];
        }
        else{
            while (ints[i] != ints[i + 1]) {
              i++;
            }
            temp[i] = ints[i];
        }
    }

    return temp;
}


当我运行此代码时,它给了我arrayOutOfBoundException。任何机构都可以指出错误吗?我基本上是检查数组中是否没有两个连续的数字相同,然后打印相同的数组,但如果两个连续的数字相同,则打印下一个数字的副本。

最佳答案

什么时候

i == ints.length-1


支票

ints[i] != ints[i + 1]


将给出一个错误,因为

ints[i + 1]


不存在。

array.length给出数组中元素的数量,而数组的索引从0开始,而不是从1开始。因此,数组array[array.length]的元素将永远不存在,并且将始终给出异常。

07-26 09:38
查看更多