基本上我要做的就是找到一个特定的数字,在这种情况下是2,看看我的程序中有多少次这个数字,我认为我必须使用.GetValue(42)但是它做得不对,我使用的代码是
static int count2(int[] input)
{
return input.GetValue(2);
}
输入来自一个单独的方法,但它包含我正在使用的值
int [] input = {1,2,3,4,5};
答案 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:)