2013-10-12 3 views
2

Мне нужно создать новые переменные Strings таким образом, чтоКак динамически создавать переменные в 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"; 
    } 
} 

Может кто-нибудь помочь мне исправить этот код?

+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.

Массив:

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:

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.

Смежные вопросы