2013-10-25 23 views
0

我製作了一個程序,讀取一串隨機數的輸入,並測試它們是否符合特定條件。如果他們符合標準,那麼該方法返回true。如何在c中創建一個真正的回報計數#

我在想什麼是否有一種方法可以保持總共有多少個值返回true。

爲了節省空間生病,只是發佈輸入法和計數方法我已經開始使用!

任何幫助將不勝感激!

這是我在迄今爲止哪裏...

public bool Requirement(int input, int countOfTrue) 
    { 
     if (input % 8 == 0 && input % 11 == 0) 
     { 
      Console.WriteLine("True"); 
      countOfTrue = countOfTrue + 1; 
      return true; 
     } 
     return false; 
    } 

public int TotalTrue(int countOfTrue) 
    { 
     Console.WriteLine("Number of True: "); 
     return countOfTrue; 
    } 

回答

2

將其更改爲:

public bool Requirement(int input, ref int countOfTrue) 
{ 
    if (input % 8 == 0 && input % 11 == 0) 
    { 
     Console.WriteLine("True"); 
     countOfTrue = countOfTrue + 1; 
     return true; 
    } 
    return false; 
} 

添加ref將修改原始變量,而不僅僅是堆棧的局部之一。

正如Kevin指出的那樣,實際上不能使用out,因爲如果if條件爲false,變量將不會被分配。

+0

你不能在這種情況下使用。您必須使用ref關鍵字。 – deloreyk

+0

@KevinDeLorey:謝謝你的發現,糾正了我的帖子。 –

1

對於true而言,您可以製作一個property而不是製作方法。這將保存方法調用和代碼空間。用錯誤的設計節省空間不是一個好習慣。您可以使用ref發送可以遞增的初始值,但您需要保存返回的value以用於下次呼叫。

public TotalTrueCount {get; set;} 

public bool Requirement(int input) 
{ 
    if (input % 8 == 0 && input % 11 == 0) 
    { 
     Console.WriteLine("True"); 
     TotalTrueCount++; 

     return true; 
    } 
    return false; 
} 
0

最好和最consice方式是使用FindAll方法,它是對於這個特別設計的。

var numbers = new List<int>(); 

// read the numbers into the list (e.g. from file) 

var results = numbers.FindAll(num => num % 8 == 0 && num % 11 == 0); // returns a new list with all the numbers matching your predicate 
var resultsCount = results.Count; // number of resulting numbers 
相關問題