计算C#中数组元素的频率

时间:2019-06-12 06:09:38

标签: c#

我想用C#编写代码。

实际上,我想用C#编写程序,以便该程序接收一个数字列表,然后接收另一个数字,最后检查给定列表中接收到的数字出现了多少次。

我从GitHub搜索并从C#中获取了以下代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Array9a
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j,N,count;

            Console.WriteLine("Enter the Maximum Range for the Array");
            N = Convert.ToInt32(Console.ReadLine());
            string[] a = new string[N];
            int[] freq = new int[N];
            for (i = 0; i < N; i++)
            {
                a[i] = Console.ReadLine();
               freq[i] = -1;
            }
            for (i = 0; i < N; i++)
            {
                count = 1;
                for (j = i + 1; j < N; j++)
                {
                    if (a[i] == a[j])
                    {
                        count++;
                        freq[j] = 0;
                    }


                }
                if (freq[i] != 0)
                {
                    freq[i] = count;
                }

            }
            for (i = 0; i < N; i++)
             {
                 if (freq[i] != 1)
                {
                    Console.Write("{0}{1}", a[i], freq[i]);
                }
            }
            Console.ReadLine();
        }
    }
}

上述代码的输出是所有元素的频率。但是我想修改代码,使程序接收到一个数字,然后检查给定数字的频率。

最近我正在学习C#。预先感谢

3 个答案:

答案 0 :(得分:6)

这似乎很简单。

var result = freq.Count(x => x == theNumberToCheck);

答案 1 :(得分:2)

例如,您可以使用linq非常简单

        int frequency = 1;
        int[] arr = new int[] { 1, 4, 6, 7, 1, 2, 6 ,1};
        var res =arr.Count(x => x == frequency);
        Console.WriteLine(res);//print 3

答案 2 :(得分:2)

要获取每个数字的计数:

Counter A