2016-06-12 3 views
0

Я новичок в программировании, поэтому, пожалуйста, со мной. У меня есть следующая проблема, и я не уверен, как ее решить. Я ищу предложения. У меня есть данные экземпляра (см. Ниже). Это то, что я пытаюсь сделать:Инициализация и объявление объектов и методов

Убийство должно быть инициализировано до new KillList() при объявлении или в конструкторе.

private KillList killring;

KillList класс ребенка в другой класс. Общая программа работает со списками: LinkedLists и ArrayList. Конструктор добавляет элементы из ArrayList в Killring. Новый узел добавляется каждый раз до конца linkelist.

Это то, что я до сих пор:

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

@ Ани Хорошо! Если вы считаете, что этот ответ решил вашу проблему, не забудьте принять ответ. Если вам нужна дополнительная помощь, не стесняйтесь обновлять свой вопрос или сообщать о своем успехе. – OliPro007

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