2012-01-12 23 views
0

forループを使用して、同じ名前を持つ配列のリストを反復処理して、最後に別の番号が必要です。たとえばchild1、child2などですが、もし私がchildiを試したら、私はすべての配列をループすることができる変数です。しかし、それはうまくいかなかった。私は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

:あなたの究極の目標を達成するために

、あなたは、別の構造には、このようなおそらく別の配列を、配列を置く必要があるでしょうか?それは私にとって不安です。たとえば、ループの各繰り返しで破棄され再作成されるforループのMap *を作成する理由は?意味がありません。コードで解決しようとしているのではなく、解決しようとしている全体的な問題を私たちに伝える方がずっと良いと思います。なぜなら、正しいアプローチが大きく異なると賭けているからです。 –

答えて

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"); 
    } 
} 
+0

ありがとう、私がこれをした唯一の時間はPHPだと思います。これは動的な言い回しだと思います – Aaron

1

実際にコード内でこのように配列の名前を設定することはできません。あなたはコンパイル時と実行時のオプションを混在させています。あなたのプログラムが実際に実行されるまでに、変数の名前は固定されているだけでなく、無関係です。Javaは実際にはデバッグのためにそれを保持しています(難読化するとプログラムが失敗することなく名前が変わることがあります)。あなたが何をしようとしてよりよく説明でき

for (int p; p < people.length(); p++) { 
    String[] child = people[p]; 
    ... 
} 
関連する問題