每次运行该程序时,由于此行代码,它总是崩溃:
if (s[i] == 'e')
有人可以帮我吗?
Console.WriteLine("Enter a string:");
string s = Console.ReadLine();
Console.WriteLine(s);
int anz = 0;
for (int i = 0; i <= s.Length; i++)
{
if (s[i] == 'e')
anz++;
else if (s[i] == 'E')
{
anz++;
}
}
Console.WriteLine("There are" + anz + "e's in your string! ");
Console.ReadKey();
答案 0 :(得分:3)
您可以使用Linq的Count()
并省略所有循环和变量声明:
int anz = s.Count(i => i == 'e' || i == 'E');
答案 1 :(得分:0)
更改
for (int i = 0; i <= s.Length; i++)
到
for (int i = 0; i < s.Length; i++)
或
for (int i = 0; i <= (s.Length-1); i++)
即如果键入10个字符,它将尝试在最后一个循环中获取s[10]
。索引从0开始,以长度-1结尾。您尝试再得到一个字母。
请注意,有简单的方法可以实现这一点。
答案 2 :(得分:0)
您可以尝试这种方式:
string search = "search the E character";
int count = 0;
foreach (var character in search.ToLower())
{
if (character.Equals('e'))
count += 1;
}