2016-06-12 13 views
0

私はプログラミングに慣れていますので、私と一緒にお立ち寄りください。私は次の問題を抱えており、解決方法はわかりません。私は提案を探しています。私はインスタンスデータを持っています(下記参照)。これは私がやろうとしていることです:オブジェクトとメソッドの初期化と宣言

宣言されたとき、またはコンストラクタでキリングをnew KillList()に初期化する必要があります。

private KillList killring;

KillListは、別のクラスの子クラスです。全体のプログラムは、List:LinkedListsとArrayListを扱います。 コンストラクタは、ArrayListの要素をKillringに追加します。新しいノードが毎回リンクリストの最後に追加されます。これは私がKillListのために、これまで持っているものである

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 
} 

このは、私がこれまで持っているものである

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のコンストラクタを使用する必要があります。したがって、killring = new KillList(players.get(0))のコンストラクタを使用する必要があります。

しかし、少し論理的な間違いを指摘したいと思います。あなたは「Kill​​List」を作成していますが、それ以上のプレイヤーを含むことはできません。適切なリストが必要な場合は、リストメンバーフィールドと、そのリストに追加して削除する適切なメソッドをKillListの中に追加する必要があります。

+0

あなたは正しいです!私は結果に更新しました。 KillList()についてはまだ進行中です。 KillList()、AssassinNodeData()、AssassinNodeClient()、AssassinNodeManager()の3つのクラスがあります。 – Ani

+0

@Aniよかったら!この答えがあなたの問題を解決したと思うなら、答えを受け入れることを忘れないでください。さらに助けが必要な場合は、お気軽に質問を更新するか、進捗状況を記入してください。 – OliPro007

関連する問題