如何在不知道它将具有的长度的情况下创建数组

时间:2016-06-11 09:37:03

标签: java arrays

我有一个问题要解决如下:

  

创建一个方法,该方法返回仅包含另一个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方法来解决这个问题。

1 个答案:

答案 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;
}