如何使用循环设置变量的值? 例如:
String cur[]= {"A","B"};
String strA,strB;
for(int i =0;i < cur.length;i++) {
str+i = "Blah";
}
什么应该在“str + i”部分,所以它将strA和strB设置为“Blah”?
由于
答案 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);
}
}