2013-10-12 2 views
2

나는Java에서 변수를 동적으로 만드는 방법은 무엇입니까?

String person1 = "female"; 
String person2 = "female"; 
........ 
........ 
String person60 = "male"; 
........ 
String person100 = "male"; 

이 내가

for (int i = 1; i <101; i++) { 
    if (i<60) { 
    String person+i = "female"; 
    } 
    else { 
    String person+i = "male"; 
    } 
} 

이 사람이 날이 코드를 수정 도와 드릴까요 뭘하려 있도록 Strings 새로운 변수를 만들 필요가?

+11

배열을 사용하십시오. 변수의 이름을 동적으로 지정할 수는 없습니다. –

+0

@SotiriosDelimanolis ...용이하게. – chrylis

+0

최종 목표는 무엇입니까? –

답변

18

지도를 사용하면 모든 키를 모든 값과 연결할 수 있습니다. 이 경우 키는 변수의 이름이고 값은 값입니다.

Map<String, String> details = new HashMap<>(); 
for (int i = 1; i <101; i++) { 
    if (i<60) { 
     details.put("person" + i, "female"); 
    } 
    else { 
     details.put("person" + i, "male"); 
    } 
} 
4

동적으로 결정할 수있는 크기의 String[]이 필요합니다.
그런 다음 배열 요소에 값을 할당하십시오.

String[] anArray; 

// some magic logic 

anArray = new String[100]; 
for(int i = 0; i < anArray.length; i++){ 
// more magic logic to initialize the elements 
} 

또 다른 옵션은 그래서 같은 Vector<> 또는 ArrayList<>입니다 :

List<String> anExpandableArray = new ArrayList<String>(); 
// add String data 
anExpandaleArray.add("Foo"); 
anExpandaleArray.add("Bar"); 
3

그냥 그렇게

String[] people = new String[numofelements]; 

같은 배열을 사용하여 배열

for(int i = 0; i < people.length; i++){ 
     people[i] = "whatever"; 
} 
7

을 초기화하기 너는 가깝다. 당신이 배열의 각 사람의 성별을 저장하는 경우, 당신은 이런 식으로 작업을 수행 할 수 있습니다

String[] persons = new String[100] 
for (int i = 0; i < persons.length; i++) { 
    if (i<60) { 
    persons[i] = "female"; 
    } 
    else { 
    persons[i] = "male"; 
    } 
} 

사람이 성별보다 더 많은 경우 다른 방법으로는,,, 성별 필드를 보유하는 클래스 Person을 고려하고 그런 다음 Person의 배열을가집니다. 성별을 비슷한 방식으로 설정합니다.

6

Map<String,String> 키를 "변수 이름"으로 사용하고 그 값은 해당 변수의 값입니다.

3
String[] persons = new String[101]; 

for (int i = 0; i < 101; i++) { 
    if (i < 60) { 
     String persons[i] = "female"; 
    } else { 
     String persons[i] = "male"; 
    } 
} 
4

같은 유형의 "더 많은 변수"를 만들고 싶다면 일반적으로 어떤 종류의 목록이 필요합니다. Java에는 "목록"이라는 두 가지 기본 유형이 있습니다. 배열 및 List입니다.

배열하십시오 List

String[] people = new String[10];    // That gives you room for 10 

people[0] = "female"; 
people[1] = "male"; 
// ... 
int n = 1; 
System.out.println("Person " + n + " is " + people[n]); 

: 당신이 거기에 얼마나 많은 사전에 알고

List<String> people = new LinkedList<String>(); // Expandable 
people.add("female"); 
people.add("male"); 
// ... 
int n = 1; 
System.out.println("Person " + n + " is " + people.get(n)); 
// Note difference -------------------------------^^^^^^^ 

배열을 사용하여 중대하다. 얼마나 많은 사람들이 있을지 모를 때 목록을 사용하는 것이 좋습니다. 목록에

참고 일 : 인터페이스, List있다, 그리고 다른 런타임 성능 특성 (LinkedList, ArrayList 등)와 그것의 여러 다른 구체적인 구현이있다. 이들은 java.util에 있습니다.

관련 문제