2017-04-09 81 views
1

我正在努力計算如何計算一個數組中有多少數字落在1.5 - 35的值之間。我正在努力計算出哪種方法應該用來實現這一點。我想也許是一個for-each嵌入式循環,但是我越想越多,我懷疑這種方法。任何幫助將不勝感激,我會如何實現這一目標,因爲我已經計算出如何計算方程的平均價格和最低價格,所以我會在下面發佈我的當前代碼。計算在一個數組中有多少個數字在1.5 - 35 C之間#

class Program 
{ 
    static void Main(string[] args) 
    { 
     read_stock_price(); 
    } 
    static void read_stock_price() 
    { 
     Console.Write("Enter how many stocks to enter price for: "); 
     int numStocks = Convert.ToInt32(Console.ReadLine()); 

     double[] arrayinput = new double[numStocks]; 

     for (int i = 0; i < numStocks; ++i) 
     { 
      Console.Write("Enter price for stock number: "); 
      arrayinput[i] = Convert.ToDouble(Console.ReadLine()); 
     } 

     double sum = arrayinput.Sum(); 
     double average = sum/numStocks; 

     Console.WriteLine("Average price: {0} out of {1} stocks", average, numStocks); 
     Console.WriteLine("Minimum price: {0}", arrayinput.Min()); 

    } 
} 

回答

1

最短的路Enumerable.Count

var count = arrayinput.Count(x => 1.5 < x && x < 35.0); 
+0

太棒了,這確實看起來像最短的路! 這將工作得很好,你能向我解釋這部分代碼在我的情況下意味着什麼,我只想進一步理解它的含義。謝謝! x => 1.5

+1

這是一個lambda表達式:https://msdn.microsoft.com/en-us/library/bb397687.aspx。它基本上是一個接收double'x'並返回布爾型'(1.5 vyrp

2

您可以使用LINQ而不是for-each。首先過濾數組然後計算元素。

var count = arrayinput 
    .Where(x => 1.5 <= x && x <= 35.0) 
    .Count(); 
0

如果我們假定arrayinput是您的滿陣,你可以使用這個:

 double[] arrayinput = new double[numStocks]; 

    double[] filteredArray = arrayinput.Where(p => p > 1.5 && p < 3.5).ToArray(); 

    int count = filteredArray.Count(); 

這個代碼過濾器的陣列值1.5 & 3.5之間。

+0

也許你的意思的'filteredArray.Count()''而不是arrayinput.Count()'?而且,由於它是一個數組,所以最好使用length:'filteredArray.Length'。 – vyrp

+0

耶:)謝謝。 –

相關問題