如何修正代码,使if循环正确输出数组奇数位置的元素?
问题分析与解决
核心问题是你混淆了编程数组索引(从0开始)和日常说的位置(从1开始):你要输出的是奇数位置(第1、3、5...位)的元素,但当前代码里的i%2 != 0,筛选的是索引为奇数的元素(对应第2、4、6...位),这才是“位置1没输出”的原因,和取模向下取整完全无关。
修正代码
只需要把判断条件改成i%2 == 0——因为奇数位置对应的数组索引都是偶数(第1位对应索引0,第3位对应索引2,以此类推):
int[] num = new int[10]; Random rand = new Random(); for (int i = 0; i < num.Length; i++) { num[i] = rand.Next(1, 50); } // 打印原数组 for (int i=0; i < num.Length;i++) { Console.Write(" " + num[i] + " "); } Console.WriteLine(); // 换行区分原数组和结果 // 输出奇数位置(第1、3、5...位)的元素 for (int i = 0; i < num.Length; ++i) { if (i%2 == 0) // 修改判断条件 { Console.WriteLine(" " + num[i]); } }
更高效的写法
没必要通过条件判断筛选,直接从索引0开始,每次步长设为2,就能直接遍历所有奇数位置的元素:
for (int i = 0; i < num.Length; i += 2) { Console.WriteLine(" " + num[i]); }
你之前尝试的转double类型、添加i=1的或条件都是多余操作,问题根源就是索引和日常位置的对应关系搞反了。
内容的提问来源于stack exchange,提问作者Bellet
相关产品推荐
相关产品推荐

