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

'this.evenArr'在构造函数中的大小为0。 –

+2

从什么时候开始,字母“d”的含义与“the”相同? –

+0

@LórántViktorGerber谁有3个字母的时间? – rmlan

在你的代码,在实例化,规模== 0,所以你evenArr具有0最大尺寸的第二个尝试增加任何价值到阵列你会得到这个错误。尝试使它成为myArr.size()

或者更理想的情况是,使用一个可以动态调整大小的列表,这样就不会出现超大数组。

+0

为什么size/2?如果超过一半的数字是均匀的,它将不起作用;就像发布代码的情况一样。和数组没有'size'方法 –

+0

@CarlosHeuberger原因我半睡半醒:P – zgc7009