Как отобразить второй параметр класса? Доброго времени суток! Здание звучит так -> нужно реализовать стек, в который будут помещены вагоны; класс вагон имеет тип(а/б - еще не доделал) и его уникальный номер. Проблема заключается в том, что когда я вывожу элементы вагона, мне выводит только один его параметр(номер). Я уже пытался сделать, но все равно не получилось. Уже долгое время сижу на этом, не знаю что надо изменить ...using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; interface IStack { Boolean Empty(); object Pop(); object Push(object element1); object Peek(); void Display(); } class Carriage { public int CarriageNumber { get; protected set; } public string CarriageType { get; protected set; } public Carriage(string type, int number) { this.CarriageNumber = number; this.CarriageType = type; } public override string ToString() { return CarriageNumber.ToString(); } } class Stack : IStack { int StackSize; int top; object[] item1, item2; public int StackSizeProperty { get { return StackSize; } set { StackSize = value; } } public Stack() { StackSizeProperty = 10; item1 = new object[StackSize]; top = 0; } public Stack(int capacity) { StackSizeProperty = capacity; item1 = new object[StackSizeProperty]; top = 0; } public bool Empty() { if (top == 0) { return true; } return false; } public object Push(object element1) { if (top == StackSize) { Console.WriteLine("Stack is full.\n"); return "Stack is full."; } else { item1[++top] = element1; Console.WriteLine("Item was been pushed.\n"); return "item was been pushed."; } } /*public void Entering() { Console.Write("\n\tEnter the type of train: "); string CarriageType = Console.ReadLine(); Console.Write("\tEnter the number of train: "); int CarriageNumber = int.Parse(Console.ReadLine()); }*/ public object Pop() { if (Empty()) { Console.WriteLine("Stack is empty.\n"); return "Nothing."; } else { return item1[top--]; } } public object Peek() { if (Empty()) { Console.WriteLine("Stack is empty.\n"); return "Nothing."; } else { return item1[top]; } } public void Display() { int element2 = top; for (int element1 = top; element1 > 0; element1--) { Console.WriteLine("Item " + element1 + ": " + item1[element1]); } } public void Exit() { do { } while (Console.ReadKey().Key != ConsoleKey.Escape); } } class MainProgramStacks { static void Main() { Stack FullStack = new Stack(); Stack AtypeStack = new Stack(); Stack BtypeStack = new Stack(); int choice; while (true) { Console.WriteLine("- -- --- Menu --- -- -"); Console.WriteLine("- 1 - Add an element -"); //Push() // Pop() //Peek() Console.WriteLine("- 2 - Display stacks -"); //Exit() Console.WriteLine("- 3 - Exit -"); choice = int.Parse(Console.ReadLine());
switch (choice) { case 1: Console.Write("\n\tEnter the type of train: "); string CarriageType = Console.ReadLine(); Console.Write("\tEnter the number of train: "); int CarriageNumber = int.Parse(Console.ReadLine()); Carriage myCarriage = new Carriage(CarriageType, CarriageNumber); FullStack.Push(myCarriage); break; case 2: FullStack.Display(); break; case 3: FullStack.Exit(); break; } } } } Заранее благодарен!
Добрый день! Проблема заключается в том, что в методе Display() вы выводите только параметр CarriageNumber объекта вагона. Для того чтобы вывести и второй параметр (тип вагона), вам нужно изменить метод Display() следующим образом:
public void Display() { for (int element1 = top; element1 > 0; element1--) { Console.WriteLine("Item " + element1 + ": Type - " + ((Carriage)item1[element1]).CarriageType + ", Number - " + ((Carriage)item1[element1]).CarriageNumber); } }
В данном случае, мы явно приводим объект из стека к типу Carriage и затем можем получить доступ как к CarriageType, так и к CarriageNumber. Теперь метод Display() будет правильно отображать оба параметра вагона. Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь задавать.
Добрый день! Проблема заключается в том, что в методе Display() вы выводите только параметр CarriageNumber объекта вагона. Для того чтобы вывести и второй параметр (тип вагона), вам нужно изменить метод Display() следующим образом:
public void Display() {for (int element1 = top; element1 > 0; element1--) {
Console.WriteLine("Item " + element1 + ": Type - " + ((Carriage)item1[element1]).CarriageType + ", Number - " + ((Carriage)item1[element1]).CarriageNumber);
}
}
В данном случае, мы явно приводим объект из стека к типу Carriage и затем можем получить доступ как к CarriageType, так и к CarriageNumber. Теперь метод Display() будет правильно отображать оба параметра вагона. Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь задавать.