Как отобразить второй параметр класса? Доброго времени суток!
Здание звучит так -> нужно реализовать стек, в который будут помещены вагоны; класс вагон имеет тип(а/б - еще не доделал) и его уникальный номер.
Проблема заключается в том, что когда я вывожу элементы вагона, мне выводит только один его параметр(номер).
Я уже пытался сделать, но все равно не получилось.
Уже долгое время сижу на этом, не знаю что надо изменить ...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;
}
}
}
}
Заранее благодарен!

21 Авг 2019 в 07:00
156 +1
0
Ответы
1

Добрый день! Проблема заключается в том, что в методе 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() будет правильно отображать оба параметра вагона. Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь задавать.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир