You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将数组非0元素传递到另一个方法或数组?

嘿,我来帮你解决这个提取数组非0元素的问题!结合你给出的代码结构,这里有两种实用的实现方式:

解决方案:从数组中过滤掉0元素

方法1:传统循环实现(兼容所有Java版本)

这种方式先统计原数组里非0元素的数量,再创建对应长度的新数组,最后把符合条件的元素复制进去,性能稳定,适合所有Java版本。

你可以直接在你的SieveOfEratosthenes类里新增一个过滤方法,或者修改现有的sieve方法:

import java.util.Arrays;

public class SieveOfEratosthenes {
    public static void main(String[] args) {
        int[] myArray = new int[12];
        fillArrayWithNumbers(myArray); // 假设这个方法已经把数组填充为你给出的[0,1,2,3,0,5,0,7,0,0,0,11]
        System.out.println(Arrays.toString(filterNonZeroElements(myArray)));
    }

    // 专门用于过滤非0元素的方法
    public static int[] filterNonZeroElements(int[] originalArray) {
        // 第一步:统计非0元素的总数
        int nonZeroCount = 0;
        for (int num : originalArray) {
            if (num != 0) {
                nonZeroCount++;
            }
        }

        // 第二步:创建新数组并填充非0元素
        int[] resultArray = new int[nonZeroCount];
        int currentIndex = 0;
        for (int num : originalArray) {
            if (num != 0) {
                resultArray[currentIndex++] = num;
            }
        }
        return resultArray;
    }

    // 你的数组填充方法(这里补全示例逻辑)
    private static void fillArrayWithNumbers(int[] array) {
        array[0] = 0;
        array[1] = 1;
        array[2] = 2;
        array[3] = 3;
        array[4] = 0;
        array[5] = 5;
        array[6] = 0;
        array[7] = 7;
        array[8] = 0;
        array[9] = 0;
        array[10] = 0;
        array[11] = 11;
    }
}

方法2:Java 8+ Stream API(代码更简洁)

如果你的项目使用Java 8或更高版本,用Stream API可以用更少的代码实现相同功能,可读性也很强:

import java.util.Arrays;
import java.util.stream.IntStream;

public class SieveOfEratosthenes {
    public static void main(String[] args) {
        int[] myArray = new int[12];
        fillArrayWithNumbers(myArray);
        
        // 一行代码完成过滤
        int[] nonZeroArray = IntStream.of(myArray)
                                      .filter(num -> num != 0)
                                      .toArray();
        
        System.out.println(Arrays.toString(nonZeroArray));
    }

    // 你的数组填充方法
    private static void fillArrayWithNumbers(int[] array) {
        array[0] = 0;
        array[1] = 1;
        array[2] = 2;
        array[3] = 3;
        array[4] = 0;
        array[5] = 5;
        array[6] = 0;
        array[7] = 7;
        array[8] = 0;
        array[9] = 0;
        array[10] = 0;
        array[11] = 11;
    }
}

运行结果

两种方法执行后,都会输出你想要的结果:

[1, 2, 3, 5, 7, 11]

内容的提问来源于stack exchange,提问作者rafal.wawrzyniak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:10:09