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}");