用于查找所有2的C#数组

时间:2015-12-14 23:51:54

标签: c# arrays loops numbers

基本上我要做的就是找到一个特定的数字,在这种情况下是2,看看我的程序中有多少次这个数字,我认为我必须使用.GetValue(42)但是它做得不对,我使用的代码是

static int count2(int[] input)
{
    return input.GetValue(2);

}

输入来自一个单独的方法,但它包含我正在使用的值

int [] input = {1,2,3,4,5};

6 个答案:

答案 0 :(得分:4)

不确定您是否具体计算数字2或任何包含数字2的数字。

对于后来的这种简单方法:

public int count2(int[] input) {
    int counter = 0;
    foreach(var i in input) {
        if (i.ToString().Contains("2"))
        {
            ++counter;
        }
    }
    return counter;
}

答案 1 :(得分:2)

你可以用LINQ做到这一点 input.Count(x=>x==2);

答案 2 :(得分:2)

Array.GetValue()"获取一维数组中指定位置的值"这不是你想要的。 (在您的示例中,它将返回3,因为它是数组索引2处的值。)

您想要计算数组中特定项的次数。这是循环和检查每个项目的问题:

var counter = 0;
foreach(var item in input)
{
    if(item == 2)
    {
        counter++;
    }
}

return counter;

答案 3 :(得分:1)

得到一个计数这样做

   int [] inputDupes = {1,2,3,4,5,2};
   var duplicates = inputDupes
           .Select(w => inputDupes.Contains(2))
           .GroupBy(q => q)
           .Where(gb => gb.Count() > 1)
           .Select(gb => gb.Key).Count();//returns an Int32 value

查看数字2是否有重复,然后执行以下操作

   int [] inputDupes = {1,2,3,4,5,2};
   var duplicates = inputDupes
           .Select(w => inputDupes.Contains(2))
           .GroupBy(q => q)
           .Where(gb => gb.Count() > 1)
           .Select(gb => gb.Key)
           .ToList(); //returns true | false

如果你想根据任何数字做这个,那么创建一个方法并传递一个参数,在那里调用.Contains()扩展方法

  

如果你想从Console获取用户输入,你也可以这样做

   int [] inputDupes = {1,2,3,4,5,2};
   Console.WriteLine("Enter a number to check for duplicates: ");
   string input = Console.ReadLine();
   int number;
   Int32.TryParse(input, out number);
   var dupeCount = inputDupes.Count(x => x == number);
   Console.WriteLine(dupeCount);
   Console.Read();
  

重复计数

的收益率为2

答案 4 :(得分:1)

static int count2(int[] input)
{
    return input.Count(i => i == 2);
}

答案 5 :(得分:1)

您可以像这样使用Func:

public Func<int[], int, int> GetNumberCount =
  (numbers, numberToSearchFor) => 
  numbers.Count(num => num.Equals(numberToSearchFor));

...

var count = GetNumberCount(input, 2);

得到'爱一个Func:)