2013-08-02 2 views
-2

안녕하세요, Java (shocker (풍자 만화))에 문제가 있습니다. 배열의 배열이 있고 배열을 반복하여 각 문자열을 사용하여 새 개체를 만듭니다. 이게 합법적인가?string []의 이름을 가진 객체 만들기

String[] arrayOfNames = String[3]; 
goGetNamesToFillTheArray(); 
for(i = 0; i < arrayOfNames.length; i++) { 
    Person arrayOfNames[i] = new Person(); 
} 

내가 그 일을하는 것이 합법적이지 않다면, 어떻게하면 좋을까요?

설명을 위해 person이라는 유형의 개체가 여러 개 필요합니다. 배열의 항목 존과 샐리가 포함 된 경우, 나중에 나중에 프로그램 jon.doSomething()뿐만 아니라 sally.doSomething()

+2

실행 해 보셨습니까? –

+0

모두의 지식을 위해서, 이것은 의사 코드입니다. 내가 가지고있는 문제는 String을 Person()의 매개 변수로 사용하면 필요한 4 개가 아닌 하나의 객체로 끝난다는 것입니다. 그것은 Person p를 취하고 그의 이름을 덮어 쓸 것이고, 나는 그를 참조하려고 할 때 어떤 것을 골라야할지 모릅니다. – ellman121

+0

ellman : for 루프 앞에 * Person 배열을 선언하십시오. String 배열의 길이를 Person 배열의 길이로 사용하십시오. 이리와 ... 너는 약간의 노력으로 이것을 할 수있다. 그리고 일종의 코드가 아닌 질문을 할 때 실제 코드를 게시하십시오. –

답변

1

여러 가지를 할 수 :

String[] arrayOfNames = String[3]; 

이 올바르지 않습니다. 당신은 new 연산자를 통해 메모리를 할당해야합니다

내 지식
String[] arrayOfNames = new String[3]; 

가 동적으로 ID를 생성 할 수있는 방법이 없습니다. 실제로하고 싶은 것은 배열의 이름을 사용하고 어떤 식 으로든 Person에서 사용하는 것입니다.

이렇게하려면 constructor의 매개 변수로 String을 사용할 수 있습니다. 이렇게하면, 당신은 할 코드를 변경할 수 있습니다

goGetNamesToFillTheArray(); 
Person[] people = new Person[3]; 

for(i = 0; i < 3; i++) 
{ 
    people[i] = new Person(arrayOfNames[i]); 
} 

NB : 당신이 한 이후
내가 위의 코드에서 3를 사용하지만 final int LENGTH = 3; 즉, 상수 또는 변수의 어떤 종류를 사용해야합니다 .

1

Person 클래스를 표시해야합니다. 그러나이 클래스에는 String을 사용하는 생성자가있을 것이라고 생각할 수 있습니다. 아마도 을 배열에서 생성자로 String의으로 전달해야합니다.

편집 : 란 Eldan 은 답변을 통해을 표시합니다. 1+ 이상!


편집 : 귀하의 질문에 대한 최근의 편집에 관한 :

당신의 상태 : 대한 명확한

, 나는 형의 사람의 여러 개체를 갖고 싶어. 배열의 항목 존과 샐리가 포함되어있는 경우, 나는 jon.doSomething()뿐만 아니라 sally.doSomething() 당신은 변수를 문자열의 이름을 제공하기 위해 노력하고

하고, 나중에 나중에 프로그램이 수 이 방법은 Java가 작동하지 않기 때문에 수행하지 않아야합니다. 변수 이름은 그다지 중요하지 않으며, 중요하다고 생각되는 것은 아니지만 오히려 개체 참조은 정말 중요한 부분입니다. 객체를 String과 연결해야한다면 맵을 사용하십시오.하지만 이것을 수행 할 필요조차 없다고 생각합니다. 배열 또는 ArrayList 만 사용하면됩니다. 이 같은 유형의 질문은 여기에 백만 번 열어 보았습니다. 조금만 검색하면 동일한 대답을 찾을 수 있습니다.

3

당신이 사람의 배열을 만들려면 가정하고, 이름을 작성 :

String[] arrayOfNames = new String[3]; 
goGetNamesToFillTheArray(); 
Person[] arrOfPerson = new Person[arrayOfNames.length]; 
for(int i = 0; i < arrOfPerson.length; i++) { 
    arrOfPerson[i] = new Person(arrayOfNames[i]); 
}  
+0

내 생각은 정확히! 1 + –

+0

모두가 왜 당신을 업 그레 이드합니까? 나는 첫째로, LOL를 게시했다. 그럼에도 불구하고, 나는 동의한다 (+1). –

+3

@SteveP .: 그의 사진이 더 좋습니다. –

0

문제는 String 클래스 이름에서 객체를 생성하는 경우, 당신은 아래의 코드를 사용할 수 있습니다

String className = "InstanceFromString"; 
InstanceFromString test = (InstanceFromString)Class.forName(className).newInstance(); 
System.out.println(test); 
+1

그가 편집 한 것은 그의 의도가 아닙니다. –

+0

스티브 P, 예, 편집하기 전에 오해의 소지가있었습니다. 특히 피험자. – Prem

+0

동의했다. –

관련 문제