如何正确将数组a中的偶数元素复制到新数组b中?
修正Java数组提取偶数元素的代码
原代码存在几个核心问题,导致无法实现需求:
- 每次检测到偶数时都会重新创建数组
b,之前存储的偶数会被完全覆盖 - 数组
b的长度硬编码为3,若原数组中偶数数量变化,要么浪费空间要么引发数组越界;且直接使用原数组的索引i给b赋值,很容易超出b的长度范围 - 变量声明错误:
int b = new int[3];应为int[] b,否则会编译失败
方案一:传统两步实现法
先统计偶数数量,再创建对应长度的数组存储:
int a[] = {1, 6, 3, 4, 5, 8, 7}; // 统计数组中的偶数个数 int evenCount = 0; for (int num : a) { if (num % 2 == 0) { evenCount++; } } // 创建对应长度的数组并存储偶数 int[] b = new int[evenCount]; int currentIndex = 0; for (int num : a) { if (num % 2 == 0) { b[currentIndex++] = num; } } // 输出验证结果 for (int num : b) { System.out.print(num + " "); }
方案二:Java 8+ 流式API简化实现
利用流式API的筛选与转换功能,代码更简洁:
import java.util.Arrays; int a[] = {1, 6, 3, 4, 5, 8, 7}; int[] b = Arrays.stream(a) .filter(num -> num % 2 == 0) .toArray(); // 输出验证结果 for (int num : b) { System.out.print(num + " "); }
内容的提问来源于stack exchange,提问作者LOTUS
相关产品推荐
相关产品推荐

