2016-06-12 73 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