我被要求实现一个ScoreBoard
类,它有很多方法:
void add(GameEntry g)
:向GameEntry
添加新的ScoreBoard
对象。应将GameEntry
对象插入记分板列表,以使列表中的节点以不增加的分数顺序显示。void removeAll()
:删除所有游戏条目以清除记分板。- 醇>
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);
}
}
答案 0 :(得分: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文档:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html