我想在Java中按照以下方式分配一组变量:
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
我该如何在Java中实现这个?
我想在Java中按照以下方式分配一组变量:
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
我该如何在Java中实现这个?
这并不是Java的正确用法。Java中没有动态变量。Java变量需要在源代码中声明1。
根据你要实现的目标,你应该使用数组、List
或Map
等数据结构;例如:
int n[] = new int[3];
for (int i = 0; i < 3; i++) {
n[i] = 5;
}
List<Integer> n = new ArrayList<Integer>();
for (int i = 1; i < 4; i++) {
n.add(5);
}
Map<String, Integer> n = new HashMap<String, Integer>();
for (int i = 1; i < 4; i++) {
n.put("n" + i, 5);
}
可以使用反射来动态引用在源代码中声明的变量。但是,这仅适用于类成员变量(即静态和实例字段),不适用于局部变量。请参见@fyr的"快速脏"示例。Map<String, T>
代替,不要开始搞乱你的实际代码。 - Jeroen Vannevel如果您想以某种动态方式访问变量,则可以使用反射。但是反射不适用于局部变量,仅适用于类属性。
一个简单的例子如下:
public class T {
public Integer n1;
public Integer n2;
public Integer n3;
public void accessAttributes() throws IllegalArgumentException, SecurityException, IllegalAccessException,
NoSuchFieldException {
for (int i = 1; i < 4; i++) {
T.class.getField("n" + i).set(this, 5);
}
}
}
您需要在各个方面改进此代码,它只是一个示例。这也不被认为是好的代码。
int[] n = new int[4];
for(int i=1;i<4;i++)
{
n[i] = 5;
}
你应该使用 List
或 array
替代。
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
或者
int[] arr = new int[10];
arr[0]=1;
arr[1]=2;
或者更好的是
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("n1", 1);
map.put("n2", 2);
//conditionally get
map.get("n1");
Java中的动态变量名
这种东西是不存在的。
在您的情况下,您可以使用数组:
int[] n = new int[3];
for() {
n[i] = 5;
}
对于更一般的 (名称, 值)
对,请使用 Map<>
你不能直接实现它,最接近的方法是使用地图模拟它,或定义自己的对象来处理。
HashMap<String, Integer> hashMap = new HashMap();
for (int i=1; i<=3; i++) {
hashMap.put("n" + i, 5);
}