总偶数数组

Array of total even numbers

抱歉,我还在学习如何编码。我的问题很简单。 我正在尝试制作一个 int 数组,将偶数的总数加起来。我的问题是出于某种原因,我的代码将 1 计为偶数。

            int[] nums = new[] { 1, 5, 8, 9, 10, 25, 40 };
            int even = 0;
            int odd = 0;
            for (int i =0 ; i < nums.Length; i++)
            {
                if (i % 2 == 0)
                {
                    even += nums[i];                    
                }

                else
                {
                    odd += nums[i];                   
                }
            }
                Console.WriteLine(even);
                Console.WriteLine(odd);

输出将是: 59 和 39

您正在检查循环索引的奇偶校验 i。在 for 循环中使用 nums[i] 代替:

if (nums[i] % 2 == 0)
// ... rest of code

嘿,在你的代码中 if() 条件你正在检查索引但需要检查 像 nums[i] ==> 这样的数组值将给出具有值

的数组

您的代码if (i % 2 == 0)

到位,如果index就改成nums[i]%2

除了其他人给出的回复之外,您可以通过检查最后一位来提高代码的效率。基本上,奇数的最后一位总是 1 所以你可以做类似

if ((nums[i] & 1) == 0)...

and 运算通常比未优化的 % 运算快很多,后者执行除法然后计算余数。

您可以使用 foreach 循环:

        foreach (var num in nums)
        {
            if (num % 2 == 0)
            {
                even += num;                    
            }
            else
            {
                odd += num;                   
            }
        }