Java ArrayIndexOutOfBound异常

Java ArrayIndexOutOfBound异常,java,exception,Java,Exception,这是我得到索引越界异常的代码,我不明白为什么 int index = array.length - 1; E item = array[index]; while (item == null && index >= 0) { index--; item = array[index]; } 我正在获取java.lang.ArrayIndexOutOfBoundsException:-1 at 项=数组[索引]; 我不知道我哪里出错了。谁能帮忙吗 whi

这是我得到索引越界异常的代码,我不明白为什么

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

  while (item == null && index >= 0) {
  index--;
  item = array[index];
  }
我正在获取java.lang.ArrayIndexOutOfBoundsException:-1 at 项=数组[索引]; 我不知道我哪里出错了。谁能帮忙吗

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

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

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

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

  while (item == null && index >= 0) {
  index--;
  item = array[index];
  }
在这里,在访问该索引处的
元素之前,首先递减
索引
。当
index=0
首次减小索引时,它将达到
-1
,而
array[-1]
将提供
java.lang.ArrayIndexOutOfBoundsException

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

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

这应该适合您。

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

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

这应该行得通

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

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

在访问阵列后放置减量。ie向下移动
索引--