соберите int и напечатайте их каждый на новой строке согласно их строке - PullRequest
0 голосов
/ 07 ноября 2018

Я здесь, чтобы спросить, как прочитать одну строку, проверить, содержится ли она в Словаре, и если да, добавить к ней число. Например, если ввод Золото и следующая строка 115 : номер должен быть присвоен строке. Каждый раз, когда цикл вращается, он должен проверить, содержится ли строка , и добавить к ней следующую строку int .

var text = new SortedDictionary<string, int>();

while (true)
{               

    for (int i = 0; i < 2000000000; i++)
    {
        string[] sequenceOfStrings = Console.ReadLine()
        .Split();

        var material = sequenceOfStrings[0];

        if (material == "stop")
        {
            break;
        }
        if (!text.ContainsKey(material))
        {
            text.Add(material, i);
        }

Вам дана последовательность строк, каждая на новой строке. Каждая нечетная строка на консоли представляет ресурс (например, Золото, Серебро, Медь и т. Д. ) и каждое четное - количество. Ваша задача собрать ресурсы и напечатать их каждый на новой строке. Распечатать ресурсы и их количество в формате: {ресурс} -> {количество}. Вводимые величины будут в диапазоне [1… 2 000 000 000]

Спасибо за терпение. Том

1 Ответ

0 голосов
/ 07 ноября 2018

Код, решающий вашу проблему, может выглядеть так:

        var text = new SortedDictionary<string, int>();

        while (true)
        {
            string material = Console.ReadLine();
            if(material == "stop")
            {
                break;
            }


            string quantityString = Console.ReadLine();

            if (!Int32.TryParse(quantityString, out int newQuantity))
            {
                continue;
            }

            if (text.TryGetValue(material, out int currentQuantity))
            {
                text[material] = currentQuantity + newQuantity;
            }
            else
            {
                text[material] = newQuantity;
            }
        }

        foreach(var item in text)
        {
            Console.WriteLine($"{item.Key} : {item.Value};");
        }

Кстати, вам действительно нужен SortedDictionary здесь? Если у вас много ключей, тогда (в зависимости от распределения входных данных) выполнение TryGetValue может занять немного больше времени, чем для обычного словаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...