Java数组奇偶统计代码新增零元素识别统计的实现方案
实现方案选择
- 不需要编写独立的遍历判断逻辑,直接在原有判断结构中新增分支即可,还能避免额外遍历数组的性能开销。
- 注意关键细节:数学定义上0属于偶数,原代码中
arr[i] % 2 == 0的判断条件会直接将0归入偶数集合,因此如果需要把0从偶数分类中单独拆分统计,必须把0的判断放在奇偶判断逻辑之前,否则永远无法命中0的判断分支。
具体修改点
- 新增零元素统计变量:如果只需要统计0的个数,定义一个整型计数器即可;如果需要单独存储所有0元素,可以额外声明一个长度为20的
zero数组和对应的下标变量。 - 调整原有分类循环的判断顺序:优先判断当前元素是否为0,命中则更新统计值/存入数组,未命中再走原有的奇偶分类逻辑。
- 在原有奇偶输出逻辑后,新增零元素统计结果的输出。
修改后完整代码(0单独统计、不纳入偶数列表)
import java.util.Scanner; public class num { public static void main(String args[]) { final int NUM_COUNT = 20; Scanner in = new Scanner(System.in); int i = 0; int arr[] = new int[NUM_COUNT]; int even[] = new int[NUM_COUNT]; int odd[] = new int[NUM_COUNT]; // 零元素计数器,如需单独存储0可替换为数组+下标的形式 int zeroCount = 0; System.out.println("Enter 20 numbers:"); for (i = 0; i < NUM_COUNT; i++) { arr[i] = in.nextInt(); } int eIdx = 0, oIdx = 0; for (i = 0; i < NUM_COUNT; i++) { // 优先判断是否为0 if (arr[i] == 0) { zeroCount++; } else if (arr[i] % 2 == 0) { even[eIdx++] = arr[i]; } else { odd[oIdx++] = arr[i]; } } System.out.println("Even Numbers:"); for (i = 0; i < eIdx; i++) { System.out.print(even[i] + " "); } System.out.println("\nOdd Numbers:"); for (i = 0; i < oIdx; i++) { System.out.print(odd[i] + " "); } // 输出零元素统计结果 System.out.println("\nZero element count in array: " + zeroCount); } }
补充:如果你希望0仍然保留在偶数列表中,仅额外统计0的个数,不需要调整判断顺序,直接在偶数判断分支内加计数逻辑即可,对应修改片段为:
if (arr[i] % 2 == 0) { even[eIdx++] = arr[i]; if (arr[i] == 0) zeroCount++; } else { odd[oIdx++] = arr[i]; }
内容的提问来源于stack exchange,提问作者Joshua De Guzman
相关产品推荐
相关产品推荐

