【问题标题】:naming arrays in a loop在循环中命名数组
【发布时间】:2011-01-09 20:43:17
【问题描述】:

我不在我的联盟。

好的,如果我能做到这一点:

int[]teams = new int[3];
for (int i = 0; i < 3; i++)
{
teams[i] = i;
}

我如何做类似的事情,但命名多个数组,即

for (int i = 0; i < 3; i++)
{
int[]i = new int[3];
}

我读过你不能用变量命名数组,所以我不能只看到如何使用循环生成具有不同名称(基本上不止一个)的数组。

谢谢

【问题讨论】:

  • 请澄清您的问题,因为它没有意义(至少对我而言)。你到底想做什么,为什么?您使用的是哪种编程语言? C++ 还是 Java?它们绝对不一样。
  • 抱歉不是很清楚,我用的是java,这只是我放在一起的一个小例子。我基本上是在尝试创建一组以从列表中读取的名称命名的数组。
  • 如果您使用 Java,为什么将其标记为 C++?就好像你想要得到对你没有用的答案。

标签: java arrays variables loops


【解决方案1】:

您将执行以下操作 (Java):

int teams[][] = new teams[3][3]

您将执行以下操作 (C++):

int** teams = new int*[3];
for(int i=0; i<3; i++){
   teams[i] = new int[3];
}

或者你可以这样做

int teams[3][3];
for(int i=0; i<3; i++){
    for(int j=0; j<3; j++){
        teams[i][j] = //whatever you want
    }
}

编辑以回应您在下面的评论:

您要查找的是MultiMap。你会得到:

MultiMap foo = new MultiMap();

foo.put("Bob", 1);
foo.put("Bob", 2);

等等……

【讨论】:

  • 啊,我太傻了,最终数组的名称将需要是一个字符串。所以我不能只用它作为二维数组的索引...
  • @outofmyleague 你所说的“数组名称”是什么意思?你的意思是你想通过字符串查找整数?
  • 我想创建一组数组,即 String[]john=new String[3];字符串 [] 标记 = 新字符串 [3];来自文本文件中的名称列表。
【解决方案2】:

您可以制作一个数组数组(有时称为多维数组):

int [][] arr = new int[137][42];

【讨论】:

  • 如上所述,从 int 命名只是因为很容易在几行代码中显示它的变化,它最终将来自 String。曾想过将所有名称放入自己的字符串数组中然后 indexof() 以获取索引号.....
【解决方案3】:

你不能动态生成变量名,但是你可以用 Map 达到同样的效果:

//Store mappings from array name (String) to int arrays (int[])
Map<String, int[]> namedArrays = new HashMap<String, int[]>();
for (int i = 0; i < 3; i++)
{
  //This is going to be the name of your new array
  String arrayName = String.valueOf(i); 
  //Map an new int[] to this name
  namedArrays.put(arrayName, new int[3]);
}

//If you need to access array called "2" do
int[] array2 = namedArrays.get("2")

这样做的好处是您可以拥有多个同名的数组,只要它们位于不同的地图中即可。但请注意,当您将两个或多个数组映射到同一个映射中的相同名称时,之前的数组将被覆盖(丢失)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2012-11-07
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2015-10-14
    相关资源
    最近更新 更多