2012-09-19 51 views
0

在C#中的變量,我有一些小數變量與值> 0,有些等於0,我從不同的文本框數,這些小數在C#WinForm的。C#,如何算具有值> 0

什麼是統計其中有多少具有值> 0最佳做法?

如果計數> 12,有最低值的變量,應改爲0

+9

把值的數組。這太可怕了。 – Jon

+9

爲什麼不使用適當的數據結構(即數組或列表)? – Adam

+0

」 ......最低2個值= 0" 的兩位小數具有最低值(例如0或1等)或是_first_ 2位小數列表/陣列中? – basti

回答

0

它不是一個屢獲殊榮的一塊麪向對象的軟件工程,但它應該做的工作:

static void Main(string[] args) 
{ 
    var seq = Enumerable.Range(0, 12).Select(i => (decimal)i); 
    Console.WriteLine(GetGreaterThanZero(seq)); 

    var arr = seq.ToArray(); 
    SetMinNull(arr); 
    foreach(var n in arr) 
     Console.WriteLine(n); 
} 

static int GetGreaterThanZero(IEnumerable<decimal> numbers) 
{ 
    return numbers.Count(n => n > 0); 
} 

static void SetMinNull(decimal[] numbers) 
{ 
    decimal min = numbers.Min(); 

    // edit: credits to daniel for this loop 
    for(int i = 0; i < numbers.Length; i++) 
    { 
     if(numbers[i] == min) numbers[i] = 0; 
    } 
} 

它使用的集合。不過,我建議你也使用它們。使用大量編號不同的值是一種代碼味道,我猜測它幾乎不太方便。

+0

你不能讓你的'SetMinNull'簡單多了? 'var min = numbers.Min();對於(int i = 0; i

+0

對不起,我是編程新手,我從數字中得到這些小數不同的文本框...我怎樣才能使用陣列。 –

+0

使用「LinkedList 」和「AddLast」值。使用'ToArray',你可以將它轉換爲數組。 –

6

不要使用小數一長列(僅是非零值),請使用它們的排列:

decimal[] values = new decimal[17]; 
/*Populate the values array with data*/ 
int CountOfMoreThanZero = values.Count(v => v > 0); 
+0

對不起,我是編程新手,我從不同的文本框中得到這些小數...我怎樣才能使用數組。 –

+1

'值[0] = Convert.ToDecimal(Textbox1.Text);' – PhonicUK