C# 有没有办法修改这个循环?
所以我试着做这个代码测试,如果用户输入的单词中有特定的字母,并确定用户输入的单词中有多少字母 目前,如果我输入单词C# 有没有办法修改这个循环?,c#,C#,所以我试着做这个代码测试,如果用户输入的单词中有特定的字母,并确定用户输入的单词中有多少字母 目前,如果我输入单词“aabb”,我得到了4个计数器a和4个计数器b 例如,如果有2个a,并且已经测试了“a”2次,那么如何使字母“a”的测试循环停止 static int aCounter, bCounter; public static void Main (string[] args) { Console.Write("Enter the secret word: "); str
“aabb”
,我得到了4个计数器a和4个计数器b
例如,如果有2个a,并且已经测试了“a”
2次,那么如何使字母“a”
的测试循环停止
static int aCounter, bCounter;
public static void Main (string[] args)
{
Console.Write("Enter the secret word: ");
string word = Console.ReadLine();
for(int i = 0; word.Length > i; i++)
{
if (word.Count(letter => letter == 'a') > 0)
{
Console.WriteLine("\nThe word contains a");
aCounter++;
}
if (word.Count(letter => letter == 'b') > 0)
{
Console.WriteLine("\nThe word contains b");
bCounter++;
}
if (aCounter > 0)
{
Console.WriteLine(aCounter);
}
if (bCounter > 0)
{
Console.WriteLine(bCounter);
}
}
您的应用程序似乎将linq与循环混合在一起
我猜这更符合您的需求(只需删除循环)
输出
Enter the secret word: aabb
The word contains a : 2
The word contains b : 2
您还可以对所有出现的字符进行计数,并将它们放入字典中,然后进行显式测试
var letters = word.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
if (letters.TryGetValue('a', out var aCount))
Console.WriteLine($"The word contains a : {aCount}");
if (letters.TryGetValue('a', out var bCount))
Console.WriteLine($"The word contains b : {bCount}");
var letters = word.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
if (letters.TryGetValue('a', out var aCount))
Console.WriteLine($"The word contains a : {aCount}");
if (letters.TryGetValue('a', out var bCount))
Console.WriteLine($"The word contains b : {bCount}");