在java中使用数组/循环设置变量的值

时间:2011-01-11 21:16:35

标签: java arrays variables loops

如何使用循环设置变量的值? 例如:

String cur[]= {"A","B"};
String strA,strB;
for(int i =0;i < cur.length;i++) {
  str+i = "Blah";
}

什么应该在“str + i”部分,所以它将strA和strB设置为“Blah”?

由于

4 个答案:

答案 0 :(得分:3)

你不这样做。相反,您可以创建某种类型的集合。例如,您可以使用地图:

String[] cur = { "A", "B" };
Map<String, String> map = new HashMap<String, String>;
for (String name : cur)
    map.put(name, "Blah");
}

除非您使用反射(对局部变量没有帮助),否则您无法“计算”要使用的变量名称......并且您不应该使用反射像这样。

假设您要按字符串名称访问值。如果可以使用连续的整数范围(从0开始),则数组或List<T>可能更合适。这取决于你想要做什么。

答案 1 :(得分:3)

没有简单的方法可以完全按照自己的意愿行事。但是,有一个简单的替代方法:不要单独命名你的字符串,只需使用一个数组。

String[] cur = new String[2];
for (int i = 0; i < cur.length; ++i) {
    cur[i] = "Blah";
}

如果您必须按名称而不是索引访问这些字符串,请查看创建Map<String, String>

答案 2 :(得分:1)

你做不到。你可能不应该这样做。

严格要求你应该使用java.lang.reflect类。它允许您使用javascript和/或ruby等语言进行某种动态成员访问。但在这种情况下似乎有点矫枉过正。

另一个更有用的解决方案是什么先生。 Jon Skeet提议。根据您的实际需要,它可能会起作用。

答案 3 :(得分:1)

你可以做些类似的事情,虽然我不确定你为什么要这样做:

import java.lang.reflect.Field; 

public class Test { 
    static public String strA, strB; 

    public static void main(String args[]) throws Exception { 
        String cur[]= {"A","B"}; 

        for(int i =0;i < cur.length;i++) { 
            Field field = Test.class.getField("str" + cur[i]); 
            field.set(null, "Blah"); 
        } 
        System.out.println(strA); 
        System.out.println(strB); 
    } 
}