3

以下で説明すること、または私が書いているプログラムに似たようなことをしようとしています。プログラムのこの部分の前に、ゲームをプレイしているプレイヤーの名前を保持する配列があります。

プレイヤーの数に基づいて新しい配列を初期化し、その新しい配列にそのプレイヤーの名前を付ける for ループを作成したいと考えています。

したがって、より良いアイデアが得られます。

for (int i = 0; i < nPlayers; i++) {
    String name = playerNames[i];
    int[] name = new int[nCategories];  
}

したがって、別の配列に保存したものの名前に基づいて、新しい配列を割り当てようとしていることがわかります。これを行う方法はありますか?または、似たようなもので、どちらがより優れている/より効率的であると思いますか?

これはJavaプログラムです。

ありがとう!

4

2 に答える 2

3

あなたがやろうとしているように、動的な名前で変数を作成するためのクリーンな方法は実際にはありません。おそらく、マップを作成し、プレーヤーの名前をキーとして、値を新しいInt配列として、各プレーヤーのマップに新しいキーを作成することをお勧めします。

于 2013-02-27T04:38:01.067 に答える
3

Ian が有効な主張をしていることに注目することから始めたいと思います。String を使用して変数を動的に取得できるようにしたい場合は、マップが最適な候補です。キーに String を使用し、値として int[] 配列を使用するマップを作成します。次に、String キーを使用してマップから int[] を呼び出すことができます。

Map<String, int[]> players = new Map<String, int[]>();
String myname = "myname";
int[] myInts = {0,1,2};
players.put(myname, myInts);
int[] intArrayForPlayer = players.get(myname);

ただし、Java を使用する主な利点は、Java がオブジェクト指向言語であることです。目標を達成するためにクラスの使用を強く検討することをお勧めします。各 Player に必要なすべてのデータを保持するクラス変数を持つ Players というクラスを作成できます。次に、Player myPlayer = new Player();オブジェクトを作成し、それらを使用してすべての情報を保持できます。

配列または ArrayList を使用して、すべてのプレーヤー オブジェクトを保持できます。

于 2013-02-27T04:45:19.377 に答える