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