好的,我可能没有尽我所能解释它,但是我是一个初学者,我想编写一段实现此目的的代码: 您有一个字符串,需要找到其中的每个元音,并将每个元音在字符串中的位置乘以其在字母表中的位置,然后将所有总和相加 示例:steve:具有2个元音,第一个e的位置是3,并且在字母表中的位置是5。第二个e的位置在字母表中并且字符串是5 所以总和是5 * 3 + 5 * 5 = 40 这就是我所做的。 idk现在该怎么办或如何处理
var vowels = new char[] {'a', 'e', 'i', 'o', 'u', 'y', 'A','E','I', 'O', 'U','Y'};
var chars = new List<char>();
List<int> indexes = new List<int>();
Console.WriteLine("Write something : ");
var input = Console.ReadLine();
int index;
foreach (var vowel in vowels)
{
if (input.Contains(vowel))
{
index = input.IndexOf(vowel);
indexes.Add(index + 1);
chars.Add(vowel);
}
}
答案 0 :(得分:0)
考虑这种方法:
static_pointer_cast
using System;
using System.Linq;
using System.Collections.Generic;
namespace Whatever
{
class Program
{
static void Main(string[] args)
{
var vowels = new Dictionary<string, int>(5, StringComparer.OrdinalIgnoreCase) { { "a", 1 }, { "e", 5 }, { "i", 9 }, { "o", 15 }, { "u", 21 } };
Console.WriteLine("Write something : ");
var input = Console.ReadLine();
var sum = input.Select((value, index) => new { value, index })
.Sum(x =>
{
vowels.TryGetValue(x.value.ToString(), out var multiplier);
return (x.index + 1) * multiplier;
});
Console.ReadLine();
}
}
}
将原始字符串投影为带有Select
及其索引的匿名类型。
char
检查字符串是否为元音-并将其乘以位置(Sum
)乘以字母表中的位置(来自index + 1
)。
vowels
不区分大小写,因此将“ A”和“ a”视为相同。
如果编译器抱怨vowels
,请使用:
out var
相反。
答案 1 :(得分:0)
我在这里找到了答案
for (int i = 0; i < indexes.Count; i++)
{
sumofone += indexes[i] * (char.ToUpper(chars[i]) - 64);
}
答案 2 :(得分:-1)
您可以执行此操作(参考来自here):
var vowels = new char[] { 'a', 'e', 'i', 'o', 'u' };
Console.WriteLine("Write something : ");
var input = Console.ReadLine().ToLower();
int total = 0;
for (int temp = 1; temp <= input.Length; temp++)
{
if (vowels.Contains(input[temp - 1]))
{
total += temp * (char.ToUpper(input[temp -1]) - 64);
}
}
Console.WriteLine("The length is " + total);