0

这是我让索引超出界限异常的代码,我不明白为什么,

 int index = array.length - 1;
 E item = array[index];

  while (item == null && index >= 0) {
  index--;
  item = array[index];
  }

我得到 java.lang.ArrayIndexOutOfBoundsException: -1 at item = array[index]; 我不知道我哪里错了。谁能帮忙。

4

5 回答 5

1
while (item == null && index >= 0) {
  index--;
  item = array[index];
}

应该

while (item == null && index >= 0) {
  item = array[index--];
}
于 2013-10-15T22:36:02.737 回答
0

在将索引用作指向数组中对象的指针之前,您的 while 循环会递减。这将导致指向 -1 并为您提供空指针异常。

尝试将减量放在 item = array[index]; 之后

于 2013-10-15T22:41:09.770 回答
0

这应该工作

int index = array.length - 1;
 E item = array[index];

  while (item == null && index > 0) {
  index--;
  item = array[index];
  }
于 2013-10-15T23:08:32.473 回答
0

在最后一个循环中,运行索引为 0,这对于该条件是正确的。然后你递减到 -1 并尝试访问该位置的数组元素。

于 2013-10-15T22:37:45.563 回答
0
int index = array.length - 1;
 E item = array[index];

  while (item == null && index >= 0) {
  index--;
  item = array[index];
  }

在这里,您首先在访问该索引index之前递减 。elementindex = 0你第一次减少它达到-1array[-1]给你的索引时java.lang.ArrayIndexOutOfBoundsException

 int index = array.length - 1;
     E item = array[index];

      while (item == null && index >= 0) {      
      item = array[index];
      index--;
      }

这应该适合你。

于 2013-10-15T22:38:51.413 回答