2016-04-01 6 views
0

私はゲーム内のすべてのプレイヤーを取得するメソッドを持っています。問題は、2つのチームでそれらを並べ替えることです。しかし、私はどのようにテーブルを返すことができますか?私は既に2D配列を試みましたが、最後の位置にプレーヤーを配置する方法はわかりません。 2D ArrayListsを使用するオプションもありましたが、これは非常に複雑です。この問題を解決する上品な方法はありますか?メソッドからテーブルを返す

EDIT(私の現在のコード):私は、配列内の最後の位置に要素を配置する方法を知らないので

public String[][] getGameMembers() 
{ 
    if(!isIngame()) 
    { 
     return null; 
    } 

    //Return-Array 
    String[][] playerTable = new String[2][6]; 


    //Get all Players 
    List<Participant> l = game.getParticipants(); 

    //Put each player in the Arraylist 
    for(int i = 0; i < l.size(); i++) 
    { 
     Participant s = l.get(i); 

     //Get teams and put in the right place in array 
     if(l.get(i).getTeam() == Side.BLUE) 
     { 
      playerTable[0][playerTable.length] = s.getSummonerName() + " (" + s.getChampion() + ")" ; 
     } 
     else 
     { 
      playerTable[1][playerTable.length] = s.getSummonerName() + " (" + s.getChampion() + ")" ; 
     } 
    } 

    return playerTable; 
} 

このコードは動作しません。

+3

コードはどこにありますか? –

+0

2つの要素(両方のプレイヤーのリスト)を持つ配列、キーがチーム名で、値がプレーヤーのリスト、または独自のデータ構造であるマップを返すことができます。いくつかのコードを投稿する – Anton

+0

ArrayListは行く方法です...それは難しくありません。 'コレクション'学習の道を読み、いくつかの '' java arraylist examples' – vikingsteve

答えて

0

コードを少し修正しました。あなたの目標は、自分の側に応じて選手を2つのチームに分けることでした(Blue???(私は赤と仮定しました))。主な問題は、playerTable.lengthのために常に内側の配列の境界の外側に挿入していたことでした。カウンターを追跡することによって、必ず次の空の要素に必ず挿入してください。

機能を分離することでコードをさらに改善でき、次の空き要素を追跡するスマートな方法があるかもしれませんが、理解しやすい方法です。

私が誤解した場合は、私が逃したものを説明してください。

public String[][] getGameMembers() { 
    // Define our array 
    String[][] playerTable = new String[2][6]; 

    if(!isIngame()) { 
     return playerTable; // It's better practice to return an empty array rather than null. If an empty array is not allowed then throw an exception. 
    } 

    int TEAM_BLUE = 0; // Just an easy reminder in order to have more readable code 
    int TEAM_RED = 1; 

    int teamBlueCounter = 0; // Keep track of the next free element in team blue 
    int teamRedCounter = 0; // idem 

    //Get all Players 
    List<Participant> participants = game.getParticipants(); 

    //Put each player in the Arraylist 
    for(int i = 0; i < participants.size(); i++) { 
     Participant participant = participants.get(i); 

     String participantName = participant.getSummonerName() + " (" + participant.getChampion() + ")"; 

     //Get teams and put in the right place in array 
     if(participant.getTeam() == Side.BLUE) { 
      playerTable[TEAM_BLUE][teamBlueCounter] = participantName; 
      teamBlueCounter++; 
     } else { 
      playerTable[TEAM_RED][teamRedCounter] = participantName; 
      teamRedCounter++; 
     } 
    } 

    return playerTable; 
} 
+0

ありがとうございました!ちょっとした構文です: 'if(participant.getTeam()== Side.BLUE){{' '最後の括弧があまりにも多い;) – Ananaskirsche

+0

@Ananaskirscheよろしくお願いします。ありがとう、構文エラーを修正する答えを編集しました。 –

関連する問題