Можно ли перебирать элементы в связанном списке ADT из клиентского приложения на Java? - PullRequest
0 голосов
/ 01 декабря 2019

Я все еще немного зелен, когда дело доходит до Java, и надеялся получить какой-нибудь вклад / совет. Первый постер, долгое время скрытный. Я прошу прощения, если пост не соответствует стандарту и с радостью изменится под костюм.

Мне было поручено реализовать ADT для колоды из 52 карт. У меня есть четыре файла:

  • Stack.java (интерфейс)
  • Deck.java (который реализует стек)
  • Card.java (простой объектный класс сконструкторы, метод toString и методы get & set)
  • CardForce.java (клиентское приложение, в котором экземпляр Deck создается и итеративно заполняется ссылками на объекты Card)

Мне нужна программачтобы отобразить все карты в колоде, что я сделал в классе Deck следующим образом:

public void show() {
        Node current = topNode;
        while (current != null) {
            System.out.println(current.getData());
            current = current.getNext();
        }
}

Этот метод вызывается в клиентском приложении CardForce просто как deck.show() - колода является названиемпеременная типа Deck как таковая:

public static void testCardForceOperations() {
        Stack<Card> deck = new Deck<Card>();

        System.out.println("Adding 3♤, 4♡, 5♢, 6♧, 7♤, 8♡, 9♢, 10♧ to deck:");

        Card card;

        card = new Card(Card.Suit.SPADES, Card.Value.THREE);
        deck.push(card);
        card = new Card(Card.Suit.HEARTS, Card.Value.FOUR);
        deck.push(card);
        card = new Card(Card.Suit.DIAMONDS, Card.Value.FIVE);
        deck.push(card);
        card = new Card(Card.Suit.CLUBS, Card.Value.SIX);
        deck.push(card);
        card = new Card(Card.Suit.SPADES, Card.Value.SEVEN);
        deck.push(card);
        card = new Card(Card.Suit.HEARTS, Card.Value.EIGHT);
        deck.push(card);
        card = new Card(Card.Suit.DIAMONDS, Card.Value.NINE);
        deck.push(card);
        card = new Card(Card.Suit.CLUBS, Card.Value.TEN);
        deck.push(card);

        deck.show();
}

Приведенный выше код просто для целей тестирования - для заполнения связанного списка ADT всеми 52 карточками, которые я использую для цикла for для создания объектов Card.

Вывод, который я получаю, - это все ссылки на объекты Card, а не сами карты (например, Card@677327b6 Card@14ae5a5 Card@7f31245a и т. Д.).

Я понимаю, почему это происходит - в связанном списке Deck не хранятся данные о людях. читаемая информация - это историяЯ ссылался на объекты типа Card - но столкнулся с тем, как использовать вывод для печати данных, читаемых человеком.

Мне было интересно, возможно ли было бы выполнить итерации по элементам, хранящимся вADT Deck связанный список, возвращая их 1 на 1 клиентскому приложению, затем вызывая .toString() для них?

У меня также есть подозрение, что моя реализация класса Card неверна - что я, возможно, должен бытьзаполнение связанного списка ADT в классе Deck, а не в клиентском приложении.

Я собираюсь продолжить экспериментировать методом проб и ошибок, но буду очень признателен за понимание этой проблемы!

Спасибо, Ниам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...