无法完成不同阵列的迭代

时间:2012-01-12 22:33:44

标签: java arrays iteration

我正在使用for循环遍历一个阵列列表,这些阵列都具有相同的名称,最后期望不同的数字。例如child1,child2等我虽然我尝试了childi,其中i是我能够遍历所有数组的变量。但是,这没有用。我已经将int从int更改为字符串并在最后连接它,但后来我得到了一个在数组中不同的新变量。任何想法。

        int i=0;
        String []child=childi;//so child would refer to child0 then child1
        for (int j = 0; j < child.length(); j++) {
            Map<String, String> curChildMap = new HashMap<String, String>();
            children.add(curChildMap);
            curChildMap.put(NAME, child[j]);
            curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");
        }   
         i++

2 个答案:

答案 0 :(得分:2)

您无法通过动态计算的名称引用变量。在这种情况下,最好的办法是创建一个数组或其他容器来容纳子数组。例如,

String[][] children = new String[][] { child0, child1, child2, child3, /* ... */ };
for (int i = 0; i < children.length; i++) {
  String[] child = children[i];
  for (int j = 0; j < child.length(); j++) {
    Map<String, String> curChildMap = new HashMap<String, String>();
    children.add(curChildMap);
    curChildMap.put(NAME, child[j]);
    curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");
  }   
}

答案 1 :(得分:1)

您真的无法在代码中以这种方式设置数组的名称。您可以将编译时和运行时选项混合在一起。当你的程序实际运行时,变量的名称不仅是固定的,而且是无关紧要的 - Java实际上只保留它用于调试(并且混淆可以改变名称而不会导致程序失败)。'

要实现您的最终目标,您必须将数组放入另一个结构,也许是另一个数组,如下所示:

for (int p; p < people.length(); p++) {
   String[] child = people[p];
   ...
}