Переменная не меняет значение [закрыт]

188
19 августа 2018, 20:20

Ну столкнулся с такой проблемой, что переменная как с самого начала было 0 так и осталась. По сути должна принять значение от пары "ключ-значение" и прибавить его к переменной, ну а дальше вывести в label7(верхний). На скриншоте после того как я ввёл букву нажал на кнопку ход и показывает 0.

private void button1_Click(object sender, EventArgs e)
    {
        int gets = 0;
        string word = textBox1.Text;
        List<char> wordsPart = new List<char>();
        foreach (char c in word)
        {
            wordsPart.Add(c);
        }
        foreach (char ch in wordsPart)
        {
            foreach (KeyValuePair<char,int> item in latterScore)
            {
                if (item.Key == ch)
                    gets += item.Value;
            }
        }
        label7.Text = gets.ToString();
    }
    Dictionary<char, int> latterScore = new Dictionary<char, int>();
    public void InitializeLatters()
    {
        latterScore.Add('а', 1);
        latterScore.Add('б', 2);
        latterScore.Add('в', 1);
        latterScore.Add('г', 3);
        latterScore.Add('д', 2);
        latterScore.Add('е', 1);
        latterScore.Add('ё', 3);
        latterScore.Add('ж', 5);
        latterScore.Add('з', 5);
        latterScore.Add('и', 1);
        latterScore.Add('й', 4);
        latterScore.Add('к', 2);
        latterScore.Add('л', 2);
        latterScore.Add('м', 2);
        latterScore.Add('н', 1);
        latterScore.Add('о', 1);
        latterScore.Add('п', 2);
        latterScore.Add('р', 1);
        latterScore.Add('с', 1);
        latterScore.Add('т', 1);
        latterScore.Add('у', 2);
        latterScore.Add('ф', 10);
        latterScore.Add('х', 5);
        latterScore.Add('ц', 5);
        latterScore.Add('ч', 5);
        latterScore.Add('ш', 8);
        latterScore.Add('ь', 3);
        latterScore.Add('ы', 5);
        latterScore.Add('э', 8);
        latterScore.Add('ъ', 10);
        latterScore.Add('ю', 8);
        latterScore.Add('я', 3);
        latterScore.Add('*', 0);
    }

Answer 1

Это, конечно, не ответ на вопрос, но я не удержался от рефакторинга вашего кода. Вот код, который делает то же самое, что ваш

private void button1_Click(object sender, EventArgs e)
{   
    label7.Text = textBox1.Text
        .Where(c=>latterScore.ContainsKey(c))
        .Sum(c=>latterScore[c]).ToString(); 
}
READ ALSO
Управление множеством таймеров C#

Управление множеством таймеров C#

есть программа которая работает как сервер TCP и принимает данные через сокеты

165
Определение цикла for

Определение цикла for

В пространстве имён SystemActivities

193
Связь One-to-Many с отличающимся именем поля и таблицы

Связь One-to-Many с отличающимся именем поля и таблицы

Хочу создать связь: пост может иметь одного автора, у которого может быть множество постов

170