2016-06-12 75 views
0

我是編程新手,所以請裸照我。我有以下問題,我不知道如何解決它。我在尋找建議。我有一個實例數據(見下文)。這是我想要做的:初始化和聲明對象和方法

當聲明或在構造函數中時,killring應初始化爲new KillList()

private KillList killring;

KillList是一個子類,其他類。整個程序處理Lists:LinkedLists和ArrayList。 構造函數將ArrayList中的元素添加到Killring中。每次將新節點添加到鏈接列表的末尾。

這是我到目前爲止有:

public class AssassinManager { 

private static class AssassinNode { 
    private String player; 
    private String killer; 
    private AssassinNode next; 
    private AssassinNode(String name) { // to be altered 
     this.player = name; 
     this.killer = null; 
     this.next = null; 
    } 
}// End of AssassinNode - DONE 

private KillList killring; //KillList object 
private AssassinNode graveyard; //AssassinNodeData object 

/* Constructor add names from arralyist to killring 
without altering elements in arraylist */ 
public AssassinManager (ArrayList<String> players) { 
    if (players == null || players.isEmpty() == true) { 
     throw new IllegalArgumentException(); 
    } 
    killring = new AssassinNode(players.get(0)); // AN ERROR IS PRESENTED HERE 
} 

這是我迄今KillList:

public class KillList extends AssassinNodeData { 

public KillList(String player) { 
    super(player); 
} 

可能的答案:

public AssassinManager (ArrayList<String> players) { 
    if (players == null || players.isEmpty() == true) { 
     throw new IllegalArgumentException(); 
    } 
    killring = new KillList(players.get(0)); 
    KillList node = killring; 
    for (int i = 1; i < players.size(); i++) { 
     node.next = new KillList(players.get(i)); 
     node = node.next; 
    } 
} 
+0

**什麼**錯誤?哦,KillList不是'AssassinNode'。 –

+0

@ElliottFrisch不兼容無法將AssassinNode強制轉換爲KillList類 – Ani

+0

推測'AssassinNode'應該擴展(或實現)KillList。 –

回答

0

之所以它不會編譯的是,您正在調用AssasinNode的構造函數來創建一個KillList,您需要使用KillList的構造函數代替,所以killring = new KillList(players.get(0))

但是我想指出一點邏輯錯誤:你正在創建一個「KillList」,但它不能包含更多的一個玩家。如果您想要一個正確的列表,您需要添加一個列表成員字段以及在KillList內添加和從列表中刪除的正確方法。

+0

你是對的!我剛剛更新了結果。至於KillList() - 它仍在工作中。有三個類:KillList(),AssassinNodeData()和AssassinNodeClient(),以及AssassinNodeManager()。 – Ani

+0

@Ani好吧然後!如果您認爲這個答案解決了您的問題,請不要忘記接受答案。如果您需要更多幫助,請不要猶豫,隨時更新您的問題或發佈另一個問題。 – OliPro007