2012-01-12 4 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]; 
    ... 
} 
관련 문제