运行此函数时,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;
}
我尝试了多个资产来检查我是否优于0并且低于我阵列的长度,但没有任何诀窍。有人可以帮我理解我的错误吗?
答案 0 :(得分:0)
只是因为您正试图访问超出数组新数组的索引。
见
int[] newArray = new int[array.length/2];
在此声明 newArray的长度是 array.length / 2
并且
for (int i = array.length/2; **i < array.length**; i++) {
newArray[**i**] = array[i];
你的条件允许迭代到array.length-1
所以newArray应该填充到该索引,即array.length-1
。但是我们的newArray长度仅为array.length/2
,所以它超出了界限。
因为@RP说你可以纠正它。
newArray
索引应该从0而不是i
开始。像
for (int j=0, i = array.lenght/2; i < array.length; i++, j++) {
...
newArray[j] = array[i];