如何在Java中动态创建变量?

时间:2013-10-12 15:54:41

标签: java string

我需要创建新的变量Strings,以便

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";   
  }
}

有人可以帮我纠正这段代码吗?

7 个答案:

答案 0 :(得分:20)

Map允许您将任何键与任何值相关联。在这种情况下,键是变量的名称,值是值

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");
    }
}

答案 1 :(得分:9)

你很亲密。如果您将每个人的性别存储在一个数组中,您可以这样做:

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的数组。您可以以类似的方式设置性别。

答案 2 :(得分:6)

您可以使用Map<String,String>,其中键是您的“变量名称”,值是该变量的值。

答案 3 :(得分: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");

答案 4 :(得分:4)

当您发现自己想要创建相同类型的“更多变量”时,通常需要某种列表。 Java中有两种基本类型的“列表”:数组和List s。

数组:

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]);

A 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,{{1} }, 等等)。这些都在java.util

答案 5 :(得分:3)

只需使用类似的数组

String[] people = new String[numofelements];

初始化数组

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

答案 6 :(得分: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";   
    }
}