Java中出现此ArrayIndexOutOfBoundsException的原因是什么?

Java中出现此ArrayIndexOutOfBoundsException的原因是什么?,java,arrays,Java,Arrays,当我运行此函数时,Java抛出一个ArrayIndexOutOfBoundsException错误: public int[] copySecondSlice(int[] array) { int[] newArray = new int[array.length/2]; for (int i = array.length/2; i < array.length; i++) { assert i == 1; newArray[i] = arr

当我运行此函数时,Java抛出一个
ArrayIndexOutOfBoundsException
错误:

public int[] copySecondSlice(int[] array) {
    int[] newArray = new int[array.length/2];
    for (int i = array.length/2; i < array.length; i++) {
        assert i == 1;
        newArray[i] = array[i];
    }
    return newArray;
}
public int[]copySecondSlice(int[]数组){
int[]newArray=newint[array.length/2];
for(int i=array.length/2;i

我尝试了多个资源来检查I是否优于0,是否低于数组的长度,但没有任何效果。有人能帮我理解我的错误吗?

仅仅是因为您试图达到超出新数组范围的索引

这里您声明newArray的长度为array.length/2


嗯,
i
将达到
array.length-1
,但是
newArray
只有
array.length/2
元素,因此
newArray[i]
最终将失败。当然。谢谢
newArray
索引应该从零开始,而不是从
i
开始。类似于(intj=0,i=array.lenght/2;i{newArray[j]=array[i];}
int[] newArray = new int[array.length/2];
for (int i = array.length/2; **i < array.length**; i++) {
 newArray[**i**] = array[i];
  for (int j=0, i = array.lenght/2; i < array.length; i++, j++) { 
       ...
       newArray[j] = array[i];