有价值的Java用作标识符的一部分

时间:2014-07-16 08:17:16

标签: java

我有几行,如:

int a1;
int a2;
int a3;
...

我想要一个使用其他整数的循环来识别特定的' a'。

例如:

int k;

k获取一个随机数,然后我使用a'k'有价值。

6 个答案:

答案 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,...的字段。

相关问题