Почему удваивается последний символ? - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Есть коллекция Dictionary, в ней хранятся символы и ключи к этим символам (Программа шифратор, работает как та же кодировка ACSII). Но вот только последний символ из RichTextBox'a шифруется 2 раза, вместо одного. Вот код
Листинг программы
  1. void _Coder()
  2. {
  3. CheckForIllegalCrossThreadCalls = false;
  4. _Coder_BTN_Code.Enabled = false;
  5. string _RTBData = _Coder_RTB.Text;
  6. _ElAll = _RTBData.Length;
  7. StringBuilder _RTBMessage = new StringBuilder();
  8. char[] _StringData = _RTBData.ToCharArray(0, _RTBData.Length);
  9. foreach (char _str in _StringData)
  10. {
  11. if (_Data.ContainsValue(Convert.ToString(_str)) == true)
  12. {
  13. foreach (KeyValuePair<string, string> _pair in _Data)
  14. {
  15. if(_pair.Value == Convert.ToString(_str) && _ElNow < _ElAll)
  16. {
  17. _RTBMessage.Append(_pair.Key);
  18. _RTBMessage.Append(" ");
  19. _ElNow += 1;
  20. _Coder_Counter_LBL.Text = "Кодируется элемент " + Convert.ToString(_ElNow) + " из " + Convert.ToString(_ElAll);
  21. }
  22. if (_pair.Value == Convert.ToString(_str) && _ElNow == _ElAll)
  23. {
  24. _RTBMessage.Append(_pair.Key);
  25. _ElNow += 1;
  26. }
  27. }
  28. }
  29. else
  30. {
  31. _Learn_Log_LB.Items.Insert(0, "Отсутствие шифруемых символов в базе данных...");
  32. _Coder_BTN_Code.Enabled = true;
  33. }
  34. }
  35. _Coder_RTB.Text = Convert.ToString(_RTBMessage);
  36. _ElNow = 0;
  37. _Coder_BTN_Code.Enabled = true;
  38. }
Принцип программы - Текст из RTB помещается в переменную _RTBData. Далее создается массив char[] из строки. Затем каждый символ перебирается с помощью foreach. И для каждого перебираемого символа перебирается коллекция Dictionary с именем _Data. После чего символ из RTB заменяется ключом из _Data. На скриншоте я ввел букву А, но вместо того, что бы получить 16и значный код, я получаю их 2. Еще раз повторюсь. Если бы я ввел, например, "Привет", то последняя буква "т" зашифровалась бы дважды. И я не понимаю, почему. Как это исправить? С чем это связано?

Решение задачи: «Почему удваивается последний символ?»

textual
Листинг программы
  1.                         if(_pair.Value == Convert.ToString(_str) && _ElNow < _ElAll)
  2.                         {
  3.                             _RTBMessage.Append(_pair.Key);
  4.                             _RTBMessage.Append(" ");
  5.                             _ElNow += 1;
  6.                             _Coder_Counter_LBL.Text = "Кодируется элемент " + Convert.ToString(_ElNow) + " из " + Convert.ToString(_ElAll);
  7.                         }
  8.                         if (_pair.Value == Convert.ToString(_str) && _ElNow == _ElAll)
  9.                         {
  10.                             _RTBMessage.Append(_pair.Key);
  11.                             _ElNow += 1;
  12.                         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы