如何将数组中的结果传递给java中没有0数字的另一个方法?

时间:2018-05-04 16:17:24

标签: java arrays

请问您如何在没有数字的情况下将结果从数组传递到另一个数组?在这种情况下,没有数字。这是我的代码,我被困住了。

结果是:[0,1,2,3,0,5,0,7,0,0,0,1] - 我想做的就是创建另一个数组并从上面传递数字而不是0。

感谢。

public class SieveOfEratosthenes {
    public static void main(String[] args) {
        int[] myArray = new int[12];

        fillArrayWithNumbers(myArray);

        System.out.println(Arrays.toString(sieve(myArray)));

    }

    private static void fillArrayWithNumbers(int[] myArray) {
        for (int i = 0; i < myArray.length; i++) {
            myArray[i] = i;
        }
    }

    public static int[] sieve(int[] maximumNumber) {
        for (int j = 2; j < maximumNumber.length; j++) {
            for (int i = j * 2; i < maximumNumber.length; i += j) {
                maximumNumber[i] = 0;
                }
        }
        return maximumNumber;
    }
}

3 个答案:

答案 0 :(得分:3)

您可以将Int[]转换为Stream并过滤掉零值。

<强> 代码

public static void main(String[] args) {
    int[] arr = new int[]{0, 1, 2, 3, 0, 5, 0, 7, 0, 0, 0, 11};

    int[] ints = Arrays.stream(arr)
            .filter(i -> i != 0)
            .toArray();

    Arrays.stream(ints).forEach(System.out::println);

}

<强> 输出

1
2
3
5
7
11

答案 1 :(得分:1)

解决方案在上面,就像infinitezero所说的写一个包含数组长度的for循环一样。然后将数组中的项目复制为长度。

for(int i = 0; i < arr.length; i++){
  if(arr[i] == 0){

  }
  else{
    arr[i] = arr2[i];
  }

答案 2 :(得分:0)

我认为您可以创建一个新数组并使用以上零值填充它: 你想要做什么来省略所有偶数(2除外)。然后它应该这样做:

public static int[] sieve(int[] maximumNumber) {
    int[] result = new int[maximumNumber.length];
    int index= 0;

    for (int i = 1; i < maximumNumber.length; i++) {
        if (i == 2 || i % 2 != 0) { // i is 2 or odd
           result[index] = i;
           index++; // This will store the real length of the array
        }
    }
    return Arrays.copyOfRange(result, 0, index);
}