java.lang.ArrayIndexOutOfBoundsException-使用来自其他数组的循环数据填充新数组

java.lang.ArrayIndexOutOfBoundsException-使用来自其他数组的循环数据填充新数组,java,arrays,for-loop,Java,Arrays,For Loop,我有一个扫描仪,可以设置数组长度,然后数组中填充0到1000之间的随机数 接下来,我想得到所有偶数并将它们存储在一个新数组中。为此,我创建了一个循环来计算新数组的大小 其次,我再次运行循环,希望用原始数组中的所有偶数填充新数组 如果我使用1或2的长度进行测试,代码有时会工作,并且可以生成新数组。如果使用的数组长度为10,则会出现如下错误: java.lang.ArrayIndexOutOfBoundsException:索引5超出长度4的界限 对于这个错误示例,我设置了一个长度为10的数组。我有

我有一个扫描仪,可以设置数组长度,然后数组中填充0到1000之间的随机数

接下来,我想得到所有偶数并将它们存储在一个新数组中。为此,我创建了一个循环来计算新数组的大小

其次,我再次运行循环,希望用原始数组中的所有偶数填充新数组

如果我使用1或2的长度进行测试,代码有时会工作,并且可以生成新数组。如果使用的数组长度为10,则会出现如下错误:

java.lang.ArrayIndexOutOfBoundsException:索引5超出长度4的界限

对于这个错误示例,我设置了一个长度为10的数组。我有4个偶数。计数起作用,变为“4”。然而,我得到了一个错误

    //GET A COUNT FOR THE LENGHT OF ARRAY
    int count = 0;
    for(int i = 0; i < arrayLenght; i++){
        if (dasArray[i] % 2 == 0) {
            count++;
        }
    }
    
    System.out.println("COUNT " + count);
    
    
    //CREATE NEW ARRAY WITH ALL EVEN NUMBERS AND THE LENGHT OF COUNT
    int []dasGeradeArray = new int[count];
    for(int i = 0; i < arrayLenght; i++){
        if (dasArray[i] % 2 == 0) {
            dasGeradeArray[i]= dasArray[i];
        }
    }
//获取数组长度的计数
整数计数=0;
for(int i=0;i
这是因为dasGeradeArray拥有dasArray一半的索引。您不应该使用相同的i变量。您可以添加另一个变量,该变量在每次向dasGeradeArray添加内容时递增:

/

/使用所有偶数和计数长度创建新数组
int[]dasgeradearay=新int[计数];
int dasGeradeCounter=0
for(int i=0;i
当第二个循环中的
i>=count
时,您认为会发生什么?您需要在
i
之外保留另一个计数器(我们称之为
j
),并仅在需要时增加它,如
dasgeradearay[j++]=dasArray[i]
在你的第二个for循环中,显然你需要在
i
时循环。@FedericoklezCulloca谢谢!
/CREATE NEW ARRAY WITH ALL EVEN NUMBERS AND THE LENGHT OF COUNT
    int []dasGeradeArray = new int[count];
    int dasGeradeCounter = 0
    for(int i = 0; i < arrayLenght; i++){
        if (dasArray[i] % 2 == 0) {
            dasGeradeArray[dasGeradeCounter]= dasArray[i];
            dasGeradeCounter++;
        }