ArrayIndexOutOfBoundsException,
问题描述:
我创建了一个整数数组,我尝试从原始数组返回一个偶数组,但它说“ArrayIndexOutOfBoundsException”指向代码的这一部分“evenArr [size ++] = arry [i];”。我知道d阵列的d尺寸为5 谢谢ArrayIndexOutOfBoundsException,
package practice;
import java.util.*;
class Testt {
int[] myArr = {4, 6, 6, 7, 2};
int size = 0;
int[] evenArr;
Testt() {
this.evenArr = new int[size];
}
public int[] arr(int[] arry) {
for (int i = 0; i < arry.length; i++) {
if (arry[i] % 2 == 0) {
evenArr[size++] = arry[i];
}
}
return evenArr;
}
}
public class ReturnStatement {
public static void main(String[] args) {
Testt t = new Testt();
System.out.println("Size: " + t.myArr.length);
int[] result = t.arr(t.myArr);
for (int i = 0; i < result.length; i++) {
System.out.println(result + ", ");
}
}
}
答
在你的代码,在实例化,规模== 0,所以你evenArr具有0最大尺寸的第二个尝试增加任何价值到阵列你会得到这个错误。尝试使它成为myArr.size()
或者更理想的情况是,使用一个可以动态调整大小的列表,这样就不会出现超大数组。
+0
为什么size/2?如果超过一半的数字是均匀的,它将不起作用;就像发布代码的情况一样。和数组没有'size'方法 –
+0
@CarlosHeuberger原因我半睡半醒:P – zgc7009
'this.evenArr'在构造函数中的大小为0。 –
从什么时候开始,字母“d”的含义与“the”相同? –
@LórántViktorGerber谁有3个字母的时间? – rmlan