本文详细讲解如何在java中接收用户输入的整数数组,然后将其中的奇数和偶数分别提取到两个新数组中,并正确显示结果,同时解决初学者常见的变量作用域、数组操作及类型不匹配等错误。
在Java中处理“按奇偶分离数组元素”这类任务时,新手常因混淆基本数组(int[]) 与动态集合(如 ArrayList
✅ 正确思路是:
以下是精简、健壮、可直接运行的实现方案(已移除冗余方法,增强输入校验):
import java.util.*;
public class CountEvenOddArray {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 步骤1:获取数组长度(带校验)
System.out.print("Enter number of elements: ");
int n = getValidInt(sc);
// 步骤2:初始化主数组并读入元素
int[] mainArray = new int[n];
System.out.println("Enter " + n + " integers:");
for (int i = 0; i < n; i++) {
mainArray[i] = getValidInt(sc);
}
// 步骤3:用 ArrayList 动态分离奇偶数
List odds = new ArrayList<>();
List evens = new ArrayList<>();
for (int num : mainArray) {
if (num % 2 == 0) {
evens.add(num);
} else {
odds.add(num);
}
}
// 步骤4:转为 int[] 并输出(使用 Arrays.toString 美化格式)
int[] oddArray = odds.stream().mapToInt(Integer::intValue).toArray();
int[] evenArray = evens.stream().mapToInt(Integer::intValue).toArray();
System.out.println("\nOdd elements (" + oddArray.length + "): "
+ Arrays.toString(oddArray));
System.out.println("Even elements (" + evenArray.length + "): "
+ Arrays.toString(evenArray));
sc.close();
}
// 工具方法:安全读取合法整数(防输入异常)
private static int getValidInt(Scanner sc) {
while (!sc.hasNextInt()) {
System.out.print("Invalid input! Please enter an integer: ");
sc.next(); // 清除非法输入
}
return sc.nextInt();
}
} ? 关键改进说明:
? 注意事项:

掌握这一模式,你不仅能解决奇偶分离问题,更能理解 Java 中数组 vs 集合、作用域控制与输入验证的核心实践。