我有一个问题要解决如下:
创建一个方法,该方法返回仅包含另一个
的正值的数组int[] a
我通过编写这种方法解决了这个问题:
public static int[] soloPositivi(int[] a) {
int[] pos = new int[a.length];
int j=0;
for (int i=0; i<a.length; i++){
if (a[i]>0) {
pos[j] = a[i];
j++;
}
}
return pos;
}
当然,当我使用例如测试它时:
int[] a = new int[] {2,-3,0,7,11};
我得到[2,7,11,0,0]
,因为我设置了:
int[] pos = new int[a.length];
问题是,如何使pos数组具有模块化长度,以便我可以获得[2,7,11]
,而无需使用列表?我必须通过仅使用Arrays方法来解决这个问题。
答案 0 :(得分:3)
首先,循环并计算正元素的数量以了解长度,然后再循环以复制。
public static int[] copyPositiveVals(int[] arr) {
int count = 0;
for(int x : arr) {
if (x > 0) count++;
}
int[] arr2 = new int[count];
int i = 0;
for(int x : arr) {
if (x > 0) {
arr2[i] = x;
i++;
}
}
return arr2;
}