使用变量的数组长度声明

时间:2017-12-04 02:23:43

标签: java

我正在尝试创建一个名为positiveNumbersArray的数组,其长度为变量positiveNumbers,然后将array中的正数存储在其中。我收到了这个错误:

  

ArrayIndexOutOfBoundsException:5

int positiveNumbers=0;

int[] array = {12, 0, -22, 0, 43, 545, -4, -55, 12, 43, 0, -999, -87};

for(int i = 0; i<array.length;i++)
    if (array[i] > 0) 
        positiveNumbers++;

int[] positiveNumbersArray = new int[positiveNumbers];

for(int i =0; i<array.length;i++){
    if (array[i] > 0)
        positiveNumbersArray[i]=array[i];
}

2 个答案:

答案 0 :(得分:0)

问题是您需要positiveNumbersArray的单独索引。最简单的解决方法是:

positiveNumbers = 0;
for(int i =0; i<array.length;i++) {
    if(array[i] > 0)
       positiveNumbersArray[positiveNumbers++]=array[i];
}

这会将数字插入positiveNumbersArray中的正确位置。

答案 1 :(得分:0)

数组“array”的大小多于“positiveNumbersArray”,并且您使用数组“array”的索引来访问数组“positiveNumbersArray”。 例如:“数组”的大小为15,正数值为6 如果数组“array”中的正值索引是8?

试一试:

    int positiveNumbers = 0;

    int[] array = {12, 0, -22, 0, 43, 545, -4, -55, 12, 43, 0, -999, -87};

    for (int i = 0; i < array.length; i++) {
        if (array[i] > 0)
            positiveNumbers++;
    }

    int[] positiveNumbersArray = new int[positiveNumbers];

    for (int i = 0, index = 0; i < positiveNumbersArray.length; i++, index++) {

        while (array[index] <= 0) {
            index++;
        }
        positiveNumbersArray[i] = array[index];
    }