在通过迭代不同的数组时遇到问题
问题描述:
我正在使用for循环遍历所有具有相同名称的数组的列表,期望在末尾有不同的数字。例如child1,child2等我虽然如果我尝试childi我在哪里,我将能够通过所有的数组循环的变量。但是,这并不奏效。我已经将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++
答
您不能通过动态计算的名称来引用变量。在这种情况下,最好的办法是创建一个数组或其他容器来容纳你的子数组。例如,
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");
}
}
+0
谢谢,我唯一一次这样做是在PHP中,我认为这是一个动态的语言 – Aaron 2012-01-13 00:04:09
答
您真的不能在代码中以这种方式设置数组的名称。你可以将编译时和运行时选项混合在一起。当程序实际运行时,变量的名称不仅是固定的,而且也是不相关的 - Java实际上只保留它用于调试(并且混淆可以在不导致程序失败的情况下更改名称)。
为了实现你的最终目标,你必须把阵列到另一个结构,也许是另一个数组,像这样:
for (int p; p < people.length(); p++) {
String[] child = people[p];
...
}
你能更好地解释你想做什么?对我来说这是一个混乱。例如,为什么要在for循环中创建一个Map *内部*,它只会在循环的每次迭代中被丢弃和重新创建?没有意义。我认为,告诉我们你要解决的总体问题,而不是你如何用代码解决问题会更好,因为我敢打赌,正确的方法会有很大的不同。 – 2012-01-12 22:41:55