2014-06-08 3 views
-3
public class Node<E>{ 
    Node p,l,r; 
    int height; 
    String s; 

    /** class body**/ 

}; 

String[] S=new String[5000]; 
int i = 0; 
while (i < 5000){ 
    Node<E> x=new Node<E>(); 
    x.s=S[i]; 
    i++; 
} 

5000 개의 노드 객체를 만들고 싶습니다. 위에서 코드 은 동일한 변수 이름 x를 매번 할당하지만 다른 변수 이름을 원합니다. 그런 다음 5000 클래스 변수 이름을 수동으로 선언하지 않고 선언하는 방법. 내가 쉽게 5000 노드 클래스 개체를 만들 수있는 무언가가 있습니다.루프에서 객체 변수 이름을 선언하는 방법

답변

0

자바 : 나는 5000이의 크기와 노드의 배열을 제안 이 배열을 반복 할 수있게하여 각 개별 Node 내부에 값을 배치합니다. 이 예에서

public void node() { 
    Node[] allNodes = new Node[5000]; 

    //Print out all node values 
    for (Node currentNode : allNodes) { 
     currentNode.setNodeValue("Some value"); 
     System.out.println("Name: " + currentNode.getNodeValue()); 
    } 
} 

, 난은 배열을 통해 루프 향상된 루프 사용이어서 5000의 사이즈, 노드 어레이를 생성하고있다. "allNodes"배열의 모든 노드 값을 "Some value"로 설정 한 다음 인쇄합니다.

해당 값에 다시 액세스해야하는 경우 각 루프를 만들어 각 값을 가져옵니다.

편집 : Java에서 "대량 이름 변수"를 사용할 수 없습니다. 여러 객체를 저장하는 배열을 만들 수 있지만 특정 이름은 없습니다. 배열의 인덱스를 지정하여 배열 항목에 액세스합니다.

+0

비 제너릭 클래스의 경우에는 작동하지만 제네릭 형식의 클래스에서는 작동하지 않습니다. 제네릭 클래스 또는 제네릭 클래스를 비 제너릭 클래스로 변환하는 다른 방법이 있습니다. 도움 말 – user3717895

+0

무엇이 나 혼란 스럽습니까? 당신은 묻고 있습니다 .. 당신은 이것이 비 제네릭 클래스의 경우에만 작동 할 것이라고 말하고 있습니까? 이 코드는 Node를 제외한 다른 클래스와 간섭하지 않습니다. –

+0

@ walker christie 내 노드 클래스가 노드 이고 코드를 실행하는 중에 오류가 발생하면 목록 제네릭 타입 객체를 만들 수 없습니다. – user3717895

1

Java에서 : 배열의 크기를 변경하지 않으려면 하나를 사용할 수 있습니다. 그렇지 않으면, 당신은 ArrayList 같은 동적 배열을 사용할 수 있습니다

int size = 5000; 
Node[] S = new Node[size]; 

for (int i = 0; i < size; i++) { 
    S[i] = new Node(); 
} 

편집 :Assigning a name dinamically in Java is not possible. 인덱스가 범위에있을 것입니다 경우 그러나 위의 방법을 사용하여, 당신은

S[index] 

에 의해 요소에 액세스 할 수 있습니다 [0,size-1]

+0

오류 니펫을 참조하시기 바랍니다 유형 불일치 노드로 문자열을 변환 할 수 없습니다 말했다. – user3717895

+0

여기 문제는 노드 객체를 저장하는 것이 아니라 객체에 변수 이름을 할당하는 방법을 찾는 것입니다. 도움말을 참조하십시오. – user3717895

+0

@ user3717895 불가능합니다. 편집을 참조하십시오. – Christian

0

변수의 이름을 변경할 수있는 방법이 없기 때문에 배열을 사용하지 않으면이 작업을 수행 할 수 없습니다.

노드 배열을 만들어 5000 노드 개체를 만듭니다. 노드 [] x = 새 노드 [크기];

이 코드가 발생

int size = 5000; 

    String[] S = new String[size]; 
    int i = 0; 
    Node[] x = new Node[size]; 
    while (i < 5000) { 
     x[i].s = S[i]; 
     i++; 

    } 
+0

제네릭 클래스의 경우 작동하지 않습니다. – user3717895

관련 문제