显示字符和它们出现的次数?

Beg*_*ner 1 c#

我从用户那里得到一个字符串,然后把它放在一个char数组中.现在我想显示字符串中的所有字符以及它们出现的次数.我的代码如下请纠正我?

 using System;
 class count
 {
    public void charcount()
    {
       int i ;
       int count = 0;
       string s;
       Console.WriteLine("Enter the String:");
       s = Console.ReadLine();
       char[] carr = s.ToCharArray();
       for(i = 0; i < carr.Length; i++)
       {
         for(int j = 1; j < carr.Length; j++)
             {
               if(carr[j] == carr[i])
                       {
                count++;
                   }
                   else
                       {
                    return;
               }
               Console.WriteLine("The Character " + carr[i] + " appears " + count);
         }
       }        
    }

    static void Main()
    {
       count obj = new count();
       obj.charcount(); 
    }
  }
Run Code Online (Sandbox Code Playgroud)

ang*_*son 5

好吧,你的代码至少会遇到问题,因为你没有建立一个唯一字符列表,你可以在原始字符串中找到它们.任何出现多次字符的字符串都会显示奇怪的结果.

这是一个为您计算信息的LINQ表达式(您可以在LINQPad中运行它以立即查看结果):

void Main()
{
    string s = "This is a test, with multiple characters";
    var statistics =
        from c in s
        group c by c into g
        select new { g.Key, count = g.Count() };
    var mostFrequestFirst =
        from entry in statistics
        orderby entry.count descending
        select entry;
    foreach (var entry in mostFrequestFirst)
    {
        Debug.WriteLine("{0}: {1}", entry.Key, entry.count);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

 : 6 <-- space
t: 5
i: 4
s: 4
h: 3
a: 3
e: 3
l: 2
c: 2
r: 2
T: 1
,: 1
w: 1
m: 1
u: 1
p: 1

如果您不能使用LINQ,这是一个不使用它的示例:

void Main()
{
    string s = "This is a test, with multiple characters";
    var occurances = new Dictionary<char, int>();
    foreach (char c in s)
    {
        if (occurances.ContainsKey(c))
            occurances[c] = occurances[c] + 1;
        else
            occurances[c] = 1;
    }
    foreach (var entry in occurances)
    {
        Debug.WriteLine("{0}: {1}", entry.Key, entry.Value);
    }
}
Run Code Online (Sandbox Code Playgroud)