2014-03-04 32 views
0

嗨,大家好我有一個小問題,出於某種原因我得到了一個錯誤的總和。不管怎樣,我總是把我的整數總和;它不會修復錯誤。方法數組總和

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]; 
     } 
    } 
} 
+4

你應該也可以返回總和 – devshorts

+1

'return array.Where(x => x%2 == 0 && x <0).Sum();'? –

回答

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。通過將其設定在循環中,你將覆蓋它每次迭代所以它永遠不能增加。

+0

我做到了,但它仍然給我那個錯誤。 – TheBoringGuy

+0

@TheBoringGuy有什麼錯誤? –

+0

哦,我不得不將它設置爲0我沒有想到這一點。 – TheBoringGuy

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 

不要忘了初始化sum0否則你將得到

錯誤「未賦值的變量的使用」
+0

我曾嘗試在外面宣佈它,但它仍然給我同樣的問題。 – TheBoringGuy

+0

@TheBoringGuy,爲它分配'0'在聲明的時間,否則你將結束與錯誤「未賦值的變量的使用」 – Habib

0

爲什麼不這樣做簡單的方法:

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

它的不錯,但我不喜歡使用的東西我還沒有學會:) – TheBoringGuy