初学者c#任务错误

时间:2018-05-24 13:56:55

标签: c# string loops for-loop if-statement

所以我正在创建一个程序,它将接受一个字符串并将其输出为每个使用的字符以及连续多少个字符。例如“aaarrrgggghhhh”将输出:a3r3g4h4。我当前的程序有一个错误,它不会输出最后一个字符,任何人都可以帮我发现错误,谢谢!

public static void Main()
{
    int count = 1;
    Console.Write(" Input a string : ");
    string str1 = Console.ReadLine();
    for (int i = 0; i < str1.Length-1; i++)
    {
        if (str1[i] == str1[i+1] )
        {
            count++;
        }
        else
        {
            Console.Write(Convert.ToString(str1[i]) + count);
            count = 1;
        }
    }
    Console.ReadKey();
}

2 个答案:

答案 0 :(得分:1)

试试这个:

        Console.Write("Input a string: ");
        var input = Console.ReadLine();
        if (string.IsNullOrWhiteSpace(input)) return;

        var currentChar = input[0];
        var occurrence = 1;
        var result = string.Empty;

        for (var index = 1; index < input.Length; index++)
        {
            if (input[index] != currentChar)
            {
                result += $"{currentChar}{occurrence}";
                occurrence = 0;
                currentChar = input[index];
            }

            occurrence++;
        }

        result += $"{currentChar}{occurrence}";

        Console.WriteLine(result);
        Console.ReadLine();

答案 1 :(得分:-1)

string s = "aaarrrgggghhhh";
            int[] arr = new int[124];
            for (int i = 0; i < s.Length; i++)
            {
                arr[(int)s[i]]++;
            }
            string output="";
            for (int i = 65; i < 124; i++)
            {
                if (arr[i] > 0)
                {
                    char c = (char)(i);
                    output = output + c.ToString() + arr[i].ToString();
                }

            }

如果您需要解释,请告诉我。 说明: ascii值{a-z,A-Z}的范围在64-123之间。因此,每当找到一个字符时,我都会增加arr [(int)character)的值。 最后我计算使用索引有多少个字符。