繁体   English   中英

计算字母频率百分比时的C#问题

[英]C# Problems while calculating Letter Frequency percentage

我的编程技能很差,我正在尝试完成我班上的这项任务。 我在Internet上四处寻找,但仍然找不到答案。

这里有一段代码,可以打印出字母以及在文本文件中被发现的次数:

 for (int i = 0; i < (int)char.MaxValue; i++)
    {

        if (c[i] > 0 &&
            char.IsLetter((char)i))
        {
            Console.WriteLine("Letter: {0}  Frequency: {1}",
                (char)i,
                c[i]);
        }

我已经使用int count = s.Count(char.IsLetter);来计算代码中的字母数。 显然,将c [i]相除是行不通的。 我尝试了其他几种方法,但我不断出错。 我觉得解决方案非常简单,但我根本看不到它。 我希望你会愿意帮助我:)

您可以使用字典来存储每个字母的频率。 您也不应使用约束i < (int)char.MaxValue 除非c的长度> = char.MaxValue否则这将使您超出范围。

var frequency = new Dictionary<char, int>();
for (var i = 0; i < c.Length; i++)
{
    var current = (char)c[i];
    if (current > 0 && char.IsLetter(current))
    {
        if (!frequency.ContainsKey(current))
            frequency.Add(current);
        frequency[current]++;
        Console.WriteLine("Letter: {0}  Frequency: {1}", current, frequency[current]);
    }
}

想要浮点除法时也许有整数除法? 在这种情况下,将红利或除数转换为double (另一个将自动转换),例如:

(double)c[i] / count

编辑:由于您编写百分比 ,如果需要乘以一百,则还可以确保文字是double ,那么如果您对运算符的优先级谨慎,则可以将所有强制类型转换都隐含。 例:

Console.WriteLine($"Letter: {(char)i}  Count: {c[i]}  Percentage {c[i] * 100.0 / count}");

由于左相关性,乘法首先进行。 文字100.0类型为double

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM