2017-04-09 50 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

耶:)谢谢。 –

相关问题