我有几行,如:
int a1;
int a2;
int a3;
...
我想要一个使用其他整数的循环来识别特定的' a'。
例如:
int k;
k
获取一个随机数,然后我使用a'k'
有价值。
答案 0 :(得分:2)
这是不可能的,但您可以创建像int[] a = new int[20];
这样的数组。然后,您可以使用a[randVariable] = 4;
随机访问元素(从0到19)。
答案 1 :(得分:2)
鉴于名称,你可能正在寻找“阵列方式”(见Kayaman的回答):
int[] a = new int[10];
// ...
for (int i : a) {
// do something with 'i'
}
但是,如果您不能将这些对象声明为数组,则可以随时创建一个:
int a, b, c, d, e;
// ...
for (int i : new int[] {a, b, c, d, e}) {
// do something with 'i'
}
如果您不一定要迭代所有这些,只需要几个:
Map
(如果您需要某种排序和一致排序,请使用TreeMap
;使用HashMap
否则)在第二种情况下,您正在创建一个数组并同时对其进行初始化,然后迭代其元素。
答案 2 :(得分:1)
你可以使用反射在Java中执行此操作,假设您的变量是类的字段。但我建议反对这一点,因为它会使你的代码变得脆弱,而且可能是不必要的。
如果可以,请使用数组:例如int[] a = new int[ToDo: size here];
答案 3 :(得分:1)
如果你已经描述了这个权利,你想得到一个名为
的变量 variableName = "a" + anInteger; // e.g. a1, a2, a3
然后你需要使用Java反射
Field field = yourClass.getClass().getField(variableName);
但是你需要根据类型对字段进行一些排序。这对你的Java级别来说似乎很复杂。
答案 4 :(得分:0)
您想使用数组:
int a[] = new int[10];
int k = ....set a value....
... do something with .... a[k]
答案 5 :(得分:0)
您可能需要反射,使用字段名称构建String,然后使用Reflection API(https://docs.oracle.com/javase/tutorial/reflect/)搜索名称为a1,a2,...的字段。