Java中打印数组元素对应位置的其他实现方法
可选实现方案
你当前的写法可以正常输出符合要求的结果,但可以通过简化逻辑、减少遍历次数优化代码,以下是两种常用的替代实现:
1. 单次遍历实现(执行效率更高)
原代码通过两次循环分别遍历数组处理偶数、奇数,实际只需一次遍历就能完成奇偶判断和计数,减少数组扫描次数,同时用格式化输出简化字符串拼接逻辑:
public class samt { public static void main(String[] args){ int Num[] = {1,2,3,4,5,6,7,8,9,10}; int evenCtr = 1, oddCtr = 0; // 单次遍历同时处理奇偶 for (int cur : Num) { if (cur % 2 == 0) { System.out.printf("Even[%d]=%d%n", evenCtr, cur); evenCtr += 2; } else { System.out.printf("Odd[%d]=%d%n", oddCtr, cur); oddCtr += 2; } } } }
这个实现的输出结果和原代码完全一致,代码行数更少,遍历数组的次数从2次降到1次,数组长度较大时性能优势会更明显。
2. 分类收集实现(可维护性更强)
如果后续需要对奇偶元素做额外处理(比如过滤、排序、统计),可以先把奇偶元素分类存储到不同集合,再统一输出,逻辑拆分更清晰:
import java.util.ArrayList; import java.util.List; public class samt { public static void main(String[] args){ int Num[] = {1,2,3,4,5,6,7,8,9,10}; List<Integer> evenList = new ArrayList<>(); List<Integer> oddList = new ArrayList<>(); // 第一步:分类收集奇偶元素 for (int cur : Num) { if (cur % 2 == 0) { evenList.add(cur); } else { oddList.add(cur); } } // 第二步:按规则输出偶数 for (int i = 0; i < evenList.size(); i++) { System.out.printf("Even[%d]=%d%n", 2*i + 1, evenList.get(i)); } // 第三步:按规则输出奇数 for (int i = 0; i < oddList.size(); i++) { System.out.printf("Odd[%d]=%d%n", 2*i, oddList.get(i)); } } }
这个写法不需要在遍历过程中维护两个计数器,输出位置直接通过集合下标计算即可,逻辑更直观,修改输出规则时只需要调整对应输出段的代码即可,不会影响分类逻辑。
小提示:Java编码规范推荐类名使用大驼峰格式、变量和方法名使用小驼峰格式,你当前代码里的类名
samt、数组名Num不符合规范,实际开发中建议调整为Samt、num。
内容的提问来源于stack exchange,提问作者Xander Yamyam
相关产品推荐
相关产品推荐

