我正在尝试创建一个名为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];
}
答案 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];
}