Проверка наличия объекта в классе - C#

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

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

Здравствуйте. Возникла проблема с методом поиска. При запуске проги создаю массив, заполняю его объектами трех классов. Поиск у меня должен работать только по объектам класса Инструмент. Но если я не ввожу объект класса Инструмент при заполнении массива, а потом вызываю поиск, то прога крашится, потому что нет объекта этого класса(как мне кажется, что наверняка и есть). Как мне в этом методе поиска проверить, существуют ли объекты нужного класса и если их нет - вывести соответствующее сообщение. Или может какой другой способ борьбы с этим предложите?
Листинг программы
  1. using System;
  2. namespace CIW
  3. {
  4. abstract class City
  5. {
  6. public string instrument { get; set; }
  7. public abstract void Input();
  8. public abstract void Output();
  9. }
  10. class Store : City
  11. {
  12. string name;
  13. public string getName(){ return name;}
  14. public void setName( string n){name = n;}
  15. string adress;
  16. public string getAdress(){ return adress;}
  17. public void setAdress( string a){adress=a;}
  18. int oNumber;
  19. public int ONumber
  20. {
  21. get{ return oNumber;}
  22. set { oNumber = value;}
  23. }
  24. public override void Input()
  25. {
  26. Console.Write("Введите название магазина: ");
  27. name = Console.ReadLine();
  28. Console.Write("Введите адрес: ");
  29. adress = Console.ReadLine();
  30. Console.Write("Введите количество отделов: ");
  31. oNumber = int.Parse(Console.ReadLine());
  32. }
  33. public override void Output()
  34. {
  35. Console.WriteLine ("Магазин: ");
  36. Console.WriteLine ("Название: {0}\nАдрес: {1}\nКоличество отделов: {2}\n", name, adress, oNumber);
  37. Console.WriteLine ("-----------------");
  38. }
  39. }
  40. class Otdel : City
  41. {
  42. string name;
  43. public string getName(){ return name;}
  44. public void setName( string n){name = n;}
  45. int iNumber;
  46. public int INumber
  47. {
  48. get{ return iNumber;}
  49. set { iNumber = value;}
  50. }
  51. string date;
  52. public string getDate(){ return date;}
  53. public void setDate( string d){date = d;}
  54. public override void Input()
  55. {
  56. Console.Write("Введите название: ");
  57. name = Console.ReadLine();
  58. Console.Write("Введите количество наименований: ");
  59. iNumber = int.Parse(Console.ReadLine());
  60. Console.Write("Введите дату создания отдела: ");
  61. date = Console.ReadLine();
  62. }
  63. public override void Output()
  64. {
  65. Console.WriteLine ("Отдел");
  66. Console.WriteLine ("Название: {0}\nКоличество наименований инструментов: {1}\nДата создания отдела: {2}\n", name, iNumber, date);
  67. Console.WriteLine ("-----------------");
  68. }
  69. }
  70. class Instrument : City
  71. {
  72. string name;
  73. public string getName(){ return name;}
  74. public void setName( string n){name=n;}
  75. int price;
  76. public int Price
  77. {
  78. get{ return price;}
  79. set { price= value;}
  80. }
  81. int number;
  82. public int Number
  83. {
  84. get{ return number;}
  85. set { number = value;}
  86. }
  87. public override void Input()
  88. {
  89. Console.Write("Введите название: ");
  90. name = Console.ReadLine ();
  91. Console.Write("Введите цену: ");
  92. price = int.Parse(Console.ReadLine());
  93. Console.Write("Введите количество: ");
  94. number = int.Parse(Console.ReadLine());
  95. }
  96. public override void Output()
  97. {
  98. Console.WriteLine ("Инструмент");
  99. Console.WriteLine ("Название: {0}\nЦена: {1}\nКоличество: {2}\n", name, price, number);
  100. Console.WriteLine ("-----------------");
  101. }
  102. }
  103. class Methods
  104. {
  105. public static void nMass(ref City[] mass)
  106. {
  107. Console.Write("Введите размер массива: ");
  108. int n = int.Parse(Console.ReadLine());
  109. mass = new City[n];
  110. for (int i = 0; i < n; i++)
  111. mass[i] = new Store();
  112. }
  113. public static void Enter(City[] mass)
  114. {
  115. int n;
  116. for (int i = 0; i < mass.Length; i++)
  117. {
  118. Console.Write("1 - Магазин\n2 - Отдел\n3 - Инструмент\n");
  119. n = int.Parse(Console.ReadLine());
  120. if (n == 1)
  121. {
  122. Store obj = new Store();
  123. obj.Input();
  124. mass[i] = obj;
  125. }
  126. else if (n == 2)
  127. {
  128. Otdel obj = new Otdel();
  129. obj.Input ();
  130. mass[i] = obj;
  131. }
  132. else if (n == 3)
  133. {
  134. Instrument obj = new Instrument();
  135. obj.Input ();
  136. mass[i] = obj;
  137. }
  138. }
  139. }
  140. public static void Out(City[] mass)
  141. {
  142. for (int i = 0; i < mass.Length; i++)
  143. mass[i].Output();
  144. }
  145. public static void Find(City[] mass)
  146. {
  147. Console.WriteLine("Введите название инструмента: ");
  148. string st = Console.ReadLine();
  149. for (int i = 0; i < mass.Length; i++)
  150. if (st.CompareTo(((Instrument)mass[i]).getName()) == 0)
  151. {
  152. mass[i].Output ();
  153. return;
  154. }
  155. Console.WriteLine(st + " в списке нет");
  156. }
  157. }
  158. class Program
  159. {
  160. static void Main()
  161. {
  162. City[] mass = new City[] { new Store() };
  163. while (true)
  164. {
  165. Console.Write("1 - Создание массива\n2 - Ввод данных\n3 - Вывод на экран\n4 - Поиск\n5 - Выход\n");
  166. switch (Console.ReadLine())
  167. {
  168. case "1": Methods.nMass(ref mass); break;
  169. case "2": Methods.Enter(mass); break;
  170. case "3": Methods.Out(mass); break;
  171. case "4": Methods.Find(mass); break;
  172. case "5": return;
  173. }
  174. }
  175. }
  176. }
  177. }

Решение задачи: «Проверка наличия объекта в классе»

textual
Листинг программы
  1.         public static void Find(City[] mass)
  2.         {
  3.             Console.WriteLine("Введите название инструмента: ");
  4.             string st = Console.ReadLine();
  5.             for (int i = 0; i < mass.Length; i++)
  6.             {
  7.                 var instrument = mass[i] as Instrument;
  8.                 if (instrument != null && instrument.getName() == st)
  9.                 {
  10.                     mass[i].Output ();
  11.                     return;
  12.                 }
  13.             }
  14.             Console.WriteLine(st + " в списке нет");
  15.         }

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


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

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

11   голосов , оценка 3.909 из 5

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

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

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