Ошибка задания для начинающего c # - PullRequest
0 голосов
/ 24 мая 2018

, поэтому я создаю программу, которая будет принимать строку и выводить ее по мере использования каждого символа и количества этих символов в строке.Например, «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 голосов
/ 24 мая 2018
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 {az, AZ} находится в диапазоне 64-123.Поэтому, когда персонаж найден, я увеличиваю значение arr [(int) character)].Наконец, я считаю, сколько символов было там, используя индекс.

0 голосов
/ 24 мая 2018

Попробуйте это:

        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();
...