Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我需要帮助从C中收集的整数求和_C# - Fatal编程技术网

C# 我需要帮助从C中收集的整数求和

C# 我需要帮助从C中收集的整数求和,c#,C#,您好,我正在寻找解决方案,如何将集合中的所有十进制值相加,其中每个字符都有自己的值 例如,假设我正在寻找单词CAR的结果。 因为每个字母代表它的值,所以我希望总结结果,这应该会给出一个适当的输出。在本例中为8.5。还有一件事我不想在LINQ中找到答案 Dictionary<char, double Letters = new Dictionary<char, double>(){ {'A', 1.5}, {'C', 3.9}, {'R', 3.1

您好,我正在寻找解决方案,如何将集合中的所有十进制值相加,其中每个字符都有自己的值

例如,假设我正在寻找单词CAR的结果。 因为每个字母代表它的值,所以我希望总结结果,这应该会给出一个适当的输出。在本例中为8.5。还有一件事我不想在LINQ中找到答案

Dictionary<char, double Letters = new Dictionary<char, double>(){
                {'A', 1.5}, {'C', 3.9}, {'R', 3.1}, 
            }; 

double result = CalculateScore("Car");
我会感谢你的帮助,因为我是C语言的新手,我已经坚持了一段时间了

没有Linq


首先,让我们将字典更改为as 8.5肯定不是int,然后让我们实现CalculateScore,假设'a'和'a'相同:

private static Dictionary<char, double> Letters = new Dictionary<char, double>()
{
   {'A', 1.5}, {'C', 3.9}, {'R', 3.1}, 
};

private static double CalculateScore(string word)
{
    double result = 0;
    foreach(var c in word)
    {
       var upperChar = char.ToUpperInvariant(c);
       if(Letters.ContainsKey(upperChar)
       {
          result += Letters[upperChar];
       }                      
    }

    return result;
}
已将int更改为double,因为字典中有非int值

private double CalculateScore(Dictionary<char, double> letters, string word)
{
    double sum = 0.0;

    foreach (char part in word)
    {
        if(letters.ContainsKey(char.ToUpper(part)))
        {
            sum += letters[part];
        }
    }

    return sum;
}

只需浏览单词的字符,并从字典中获取其值。但是,当当前角色为小写时,必须先将其转换为大写

double CalculateScore(string word)
{
    Dictionary<char, double> letters = new Dictionary<char, double>(){
            {'A', 1.5}, {'C', 3.9}, {'R', 3.1}, 
        }; 
    double sum = 0;
    for(int i = 0; i < word.Length; i++)
    {
        sum += letters[word[i].ToUpper()];
    }
    return sum;
}

你的数字不是整数。你需要一本字典或十进制,让我们看看你的尝试。为了避免那些是双精度的而不是整型的事实,你尝试了什么?我的意思是,CalculateScore是一个很漂亮的函数名,但是你是如何实现这个目标的呢?至少要解释一下,你是否已经详细阐述了解决问题的逻辑,但却无法想出一个有效的代码。将字母循环一遍,在字典中找到正确的字母,然后将它们相加。一些代码会很好。a也是1.5还是它有自己的值?我不会在这种计算中使用double。但是这很好,非常感谢你的回复。这就像做梦一样。史蒂夫,我能问你为什么不把它用于十进制计算吗?而且
var result = CalculateScore("Car");
private double CalculateScore(Dictionary<char, double> letters, string word)
{
    double sum = 0.0;

    foreach (char part in word)
    {
        if(letters.ContainsKey(char.ToUpper(part)))
        {
            sum += letters[part];
        }
    }

    return sum;
}
double sum = CalculateScrote(Letters, "Car");
double CalculateScore(string word)
{
    Dictionary<char, double> letters = new Dictionary<char, double>(){
            {'A', 1.5}, {'C', 3.9}, {'R', 3.1}, 
        }; 
    double sum = 0;
    for(int i = 0; i < word.Length; i++)
    {
        sum += letters[word[i].ToUpper()];
    }
    return sum;
}
double CalculateScore(string word)
{
    Dictionary<char, double> letters = new Dictionary<char, double>(){
            {'A', 1.5}, {'C', 3.9}, {'R', 3.1}, 
        }; 
    return word.Sum(x => letters[x].ToUpper());
}