将数组的名称设置为String变量的值

时间:2013-02-27 04:35:57

标签: java arrays variables for-loop

我正在寻找我在下面解释的内容或类似于我正在编写的程序。在我的程序的这一部分之前,我有一个数组,其中包含正在玩游戏的玩家的名字。

我想创建一个for循环,它将根据所有玩家的数量初始化一个新数组,并将该新数组命名为该玩家的名字。

所以你得到了一个更好的主意:

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

所以你可以看到我试图根据我存储在不同数组中的东西的名称来分配一个新数组。有没有办法做到这一点?或类似的东西,我认为可能更好/更有效?

这是一个Java程序btw。

谢谢!

2 个答案:

答案 0 :(得分:3)

使用动态名称创建变量并不是一种干净的方法,就像你想要的那样。也许一个很好的选择是拥有一个Map,并在地图中为每个玩家创建一个新的关键字,以玩家的名字作为关键字,将值作为新的Int数组。

答案 1 :(得分:3)

我想首先注意到伊恩提出了一个有效的观点。如果您希望能够使用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的主要优点是它是一种面向对象的语言。您可能希望强烈考虑使用类来实现目标。您可以使用类变量创建一个名为Players的类,以保存每个Player所需的所有数据。然后,您可以创建Player myPlayer = new Player();个对象并使用它们来保存所有信息。

您可以使用数组或ArrayList来保存所有播放器对象。