2016-11-03 3 views
2

Я попросил реализовать ScoreBoard класс, который имеет много методов:Реализация класса DoublyLinkedList с вызовом объекта

  1. void add(GameEntry g): добавляет новый объект GameEntry к ScoreBoard. Объект GameEntry должен быть вставлен в список табло таким образом, чтобы узлы списка отображались в неубывающем порядке оценок.
  2. void removeAll(): очищает табло, удаляя все записи об игре.
  3. void listScores(): отображает список доступных игровых партитур в табло в неуклонном порядке.

То, что я пришел с, чтобы создать ScoreBoard класс, который имеет add(gameEntry), и расширяет свой DoublyLinkedList класс, который используют DNode <E>, а также removeAll() и listScores() методы.

Мой вопрос: в домашнем задании я должен реализовать ScoreBoard и DoublyLinkedList в том же классе, я действительно пытался сделать их в одном классе, возможно ли это? Другими словами, могу ли я вызвать объект из другого класса и реализовать его в моем классе с двойным соединением ADT?

класс ScoreBoard:

public void add(GameEntry g) { 

    if (g == null) { 
     return; } 
    if (getHead() == null) { 
     setHead(new DNode(g, null, null)); 
    } else if (g.getScore() > getHead().getElement().getScore()) { 
     DNode<E> newHead = new DNode(g, null, getHead()); 
     getHead().setPrevious(newHead); 
     setHead(newHead); 
    } else if (getTail() != null && g.getScore() > getTail().getElement().getScore()) { 
     DNode newTail = new DNode(g, getTail(), null); 
     getTail().setNext(newTail); 
     setTail(newTail); 
    } else { 
     DNode<E> pointer = getHead(); 
     while (pointer != null) { 
      if (g.getScore() > pointer.getElement().getScore() && 
        g.getScore() < pointer.getNext().getElement().getScore()) { 
       pointer.setNext(new DNode(g, pointer, pointer.getNext())); 
       pointer.getNext().getNext().setPrevious(pointer.getNext()); 
       pointer = pointer.getNext(); 
      } 
     } 
    } 
    setSize(size()+1); 
} 


} 

Обновление: Добавлен код.

GameEntry Класс:

public class GameEntry { 

private String name; 
private int score; 

public GameEntry(String n, int s) { 
    name = n; 
    score = s; 
} 

public String getName() { 
    return name; 
} 

public int getScore() { 
    return score; 
} 

@Override 
public String toString() { 
    return String.format("Name: %s | Score: %d", name, score); 
} 

} 
+1

Это назначение Connamacher? –

+1

@EliSadoff Это не так. – DoeJ

+1

вам действительно нужно реализовать реализацию класса DoublyLinkedList или просто добавить add, removeAll, listScores в 'ScoreBoard'? Я бы предположил, что ScoreBoard будет иметь doubleLinkedList как одно из свойств и будет назначаться из другого класса. – alex

ответ

0

Вы можете создать ScoreBoard с вложенным классом внутри, вот пример. Но все зависит от вашего дизайна общей игры.

public class ScoreBoard { 

    private DoublyLinkedList list = new DoublyLinkedList(); 

    public ScoreBoard() { 

    } 

    public class DoublyLinkedList { 

     private Node head; 
     private Node tail; 

     public DoublyLinkedList() { 
      head = tail = null; 
     } 
    } 

    private class Node { 

     private String val; 
     private Node next; 
     private Node previous; 

     public Node(String val, Node next, Node previous) { 
      this.val = val; 
      this.next = next; 
      this.previous = previous; 
     } 
    } 

} 

Надеюсь, это поможет. Как вы можете видеть, у вас могут быть закрытые и общедоступные классы. Проверьте java docs: https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

+0

Спасибо, я сделал то, что вы предоставили. Я до сих пор не могу назвать объект GameEntry «не могу найти символ, метод getScore() location: объект класса». – DoeJ

+0

Это потому, что у объекта GameEntry этот метод отсутствует? Можете ли вы предоставить еще один код, который у вас есть, включая класс GameEntry и где он был инициализирован и т. Д. – alex

+0

Я только что редактировал мой вопрос. – DoeJ

Смежные вопросы