方法数组总和

时间:2014-03-04 18:27:45

标签: c# arrays methods indexing

大家好我因为某种原因我遇到了一个小问题。然而,无论何时我把我的int总和;它不会修复错误。

static void TotalOfEvenNegatives(int[] array)
{
    for (int i = 0; i < array.Length; i++)
    {
        if (array[i] % 2 == 0 && array[i] < 0)
        {
            int sum;
            sum += array[i];
        }
    }
}

3 个答案:

答案 0 :(得分:2)

static void TotalOfEvenNegatives(int[] array)
{
    int sum = 0;
    for (int i = 0; i < array.Length; i++)
    {
        if (array[i] % 2 == 0 && array[i] < 0)
        {

            sum += array[i];
        }
    }
}

你需要在循环外部对它进行初始化并将其设置为0.通过在循环中设置它,每次迭代都会覆盖它,因此它永远不会递增。

答案 1 :(得分:1)

您在循环中声明sum,从而覆盖所有值,将其声明为外部。

static int TotalOfEvenNegatives(int[] array)
{
    int sum = 0; //HERE

    for (int i = 0; i < array.Length; i++)
    {
        if (array[i] % 2 == 0 && array[i] < 0)
        {
            sum += array[i];
        }
    }
    return sum;
}

此外,您的方法应该返回sum,您可以像以下一样使用它:

int total = TotalOfEvenNegatives(new [] {1,2,3,4,}; //ClassName.TotalOfEvenNegatives

不要忘记使用sum初始化0,否则您将收到错误“使用未分配的变量”

答案 2 :(得分:0)

为什么不以简单的方式去做:

      int[] myArray = {1,2,3,4,} ;
      int   sum     = myArray.Where( x => x < 0 && 0 == x % 2 ).Sum() ;