Исправить ошибку с отображением Hashtable - C#
Формулировка задачи:
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.VisualBasic; namespace WindowsFormsApplication4 { class HashTablee { public Hashtable CreateList() { Hashtable tempH = new Hashtable(100); tempH.Add("Один", new Hashtable()); { ((Hashtable)tempH["Один"]).Add("Odin***Psja odin", "Psja odin"); ((Hashtable)tempH["Один"]).Add("Odin***Psja dva", "Psja dva"); ((Hashtable)tempH["Один"]).Add("Odin***Psja tri", "Psja tri"); ((Hashtable)tempH["Один"]).Add("Odin***Psja chetire", "Psja chetire"); ((Hashtable)tempH["Один"]).Add("Odin***Psja pjat'", "Psja pjat'"); ((Hashtable)tempH["Один"]).Add("Odin***Psja shest'", "Psja shest'"); ((Hashtable)tempH["Один"]).Add("Odin***Psja sem", "Psja sem"); ((Hashtable)tempH["Один"]).Add("Odin***Psja vosem", "Psja vosem"); ((Hashtable)tempH["Один"]).Add("Odin***Psja devjat'", "Psja devjat'"); ((Hashtable)tempH["Один"]).Add("Odin***Psja desjat'", "Psja desjat"); } tempH.Add("Два", new Hashtable()); { ((Hashtable)tempH["Два"]).Add("Dva***Psja odin", "Psja odin"); ((Hashtable)tempH["Два"]).Add("Dva***Psja dva", "Psja dva"); ((Hashtable)tempH["Два"]).Add("Dva***Psja tri", "Psja tri"); ((Hashtable)tempH["Два"]).Add("Dva***Psja chetire", "Psja chetire"); ((Hashtable)tempH["Два"]).Add("Dva***Psja pjat'", "Psja pjat'"); ((Hashtable)tempH["Два"]).Add("Dva***Psja shest'", "Psja shest'"); ((Hashtable)tempH["Два"]).Add("Dva***Psja sem", "Psja sem"); ((Hashtable)tempH["Два"]).Add("Dva***Psja vosem", "Psja vosem"); ((Hashtable)tempH["Два"]).Add("Dva***Psja devjat'", "Psja devjat'"); ((Hashtable)tempH["Два"]).Add("Dva***Psja desjat'", "Psja desjat"); } tempH.Add("Три", new Hashtable()); { ((Hashtable)tempH["Три"]).Add("Tri***Psja odin", "Psja odin"); ((Hashtable)tempH["Три"]).Add("Tri***Psja dva", "Psja dva"); ((Hashtable)tempH["Три"]).Add("Tri***Psja tri", "Psja tri"); ((Hashtable)tempH["Три"]).Add("Tri***Psja chetire", "Psja chetire"); ((Hashtable)tempH["Три"]).Add("Tri***Psja pjat'", "Psja pjat'"); ((Hashtable)tempH["Три"]).Add("Tri***Psja shest'", "Psja shest'"); ((Hashtable)tempH["Три"]).Add("Tri***Psja sem", "Psja sem"); ((Hashtable)tempH["Три"]).Add("Tri***Psja vosem", "Psja vosem"); ((Hashtable)tempH["Три"]).Add("Tri***Psja devjat'", "Psja devjat'"); ((Hashtable)tempH["Три"]).Add("Tri***Psja desjat'", "Psja desjat"); } tempH.Add("Четыре", new Hashtable()); { ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja odin", "Psja odin"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja dva", "Psja dva"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja tri", "Psja tri"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja chetire", "Psja chetire"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja pjat'", "Psja pjat'"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja shest'", "Psja shest'"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja sem", "Psja sem"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja vosem", "Psja vosem"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja devjat'", "Psja devjat'"); ((Hashtable)tempH["Четыре"]).Add("Четыре***Psja desjat'", "Psja desjat"); } tempH.Add("Пять", new Hashtable()); { ((Hashtable)tempH["Пять"]).Add("Пять'***Psja odin", "Psja odin"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja dva", "Psja dva"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja tri", "Psja tri"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja chetire", "Psja chetire"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja pjat'", "Psja pjat'"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja shest'", "Psja shest'"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja sem", "Psja sem"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja vosem", "Psja vosem"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja devjat'", "Psja devjat'"); ((Hashtable)tempH["Пять"]).Add("Пять'***Psja desjat'", "Psja desjat"); } return tempH; } public Hashtable AddSong(Hashtable cd) { int cdKol, songKol; cdKol = int.Parse(Interaction.InputBox("Введите количество дисков")); for (int i = 0; i < cdKol; i++) { StringBuilder cdName = new StringBuilder(50); Hashtable song = new Hashtable(); cdName.Append(Interaction.InputBox("Введите название нового диска")); songKol = int.Parse(Interaction.InputBox("Введите количество песен в этом диске")); for (int j = 0; j < songKol; j++) { StringBuilder songName = new StringBuilder(50); songName.Append(Interaction.InputBox("Введите название песни")); song.Add((cdName + "***" + songName), songName); } cd.Add(cdName, song); } return cd; } public string Choise(Hashtable tempH, int choise, RichTextBox richTextBox) { #region для обращения к ключу из Hashtable int iTemp = 0; StringBuilder sTemp = new StringBuilder(); foreach (DictionaryEntry b in tempH) { iTemp++; sTemp.Clear().Append(b.Key); if (iTemp >= choise) break; } #endregion return sTemp.ToString(); } public void ShowList(Hashtable tempH, RichTextBox richTextBox) { int count = 0; richTextBox.Text = "Список дисков:" + "\n"; foreach (DictionaryEntry a in tempH) { richTextBox.Text += ++count + ". " + a.Key + " " + a.Value + "\n"; } richTextBox.Text += "-------------------"; } public Hashtable FindSong(Hashtable tempH, string mask) { Hashtable result = new Hashtable(); int u = 0; foreach (DictionaryEntry pp in tempH) { foreach (DictionaryEntry ppp in (Hashtable)pp.Value) { if (mask.Contains((ppp.Key.ToString()).Substring(0, mask.Length))) { result.Add(u++, ppp.Value); } } } return result; } public void Vibor(RichTextBox richTextBox) { Hashtable tempH = CreateList(); do { ShowList(tempH, richTextBox); int choise; do { try { choise = int.Parse(Interaction.InputBox("Выберите номер диска")); // Проверка, что в поле число break; // Если число, то выходи к фигам отсюда } catch (Exception) { MessageBox.Show("Не число!", "Упс!"); } } while (true); int vibor; do { try { vibor = int.Parse(Interaction.InputBox("Выберите действие:" + "\n" + "1 - открыть" + "\n" + "2 - удалить" + "\n" + "3 - добавить" + "\n" + "4 - поиск" + "\n" + "0 - выход")); break; // Если число, то выходи к фигам отсюда } catch (Exception) { MessageBox.Show("Не число!", "Упс!"); } } while (true); switch (vibor) { case 1: { Hashtable inTemp = (Hashtable)tempH[Choise(tempH, choise, richTextBox)]; ShowList(inTemp, richTextBox); break; } case 2: { tempH.Remove(Choise(tempH, choise, richTextBox).ToString()); break; } case 3: { tempH = AddSong(tempH); break; } case 4: { StringBuilder mask = new StringBuilder(); mask.Append(Interaction.InputBox("Ведите имя исполнителя")); ShowList(FindSong(tempH, mask.ToString()), richTextBox); break; } case 0: { Environment.Exit(0); break; } default: break; } } while (true); } } }
public void ShowList(Hashtable tempH, RichTextBox richTextBox) { int count = 0; richTextBox.Text = "Список дисков:" + "\n"; foreach (DictionaryEntry a in tempH) { richTextBox.Text += ++count + ". " + a.Key + " " + a.Value + "\n"; }
Решение задачи: «Исправить ошибку с отображением Hashtable»
textual
Листинг программы
{ Hashtable inTemp = (Hashtable)tempH[Choise(tempH, choise, richTextBox)]; ShowList(tempH, richTextBox); break; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д