-1

例如,如果我有很多变量 var1,var2,var3,.... 我如何使用索引轻松操作它们

for(int i=1,i<n;++i)
    System.out.print(vari);

我知道这是不正确的,但我想知道是否有可能以这种方式操纵变量

4

3 回答 3

2

将它们添加到 List 或数组 YourClass[] 并像这样遍历它们:

List<Cat> catsList = new ArrayList<>();
Cat[] catsArray = new Cat[3]; //alternatively
public CatHouse(){
    Cat bob = new Cat();
    Cat fluffy = new Cat();
    Cat tom = new Cat();
    catsList.add(bob);
    catsList.add(fluffy);
    catsList.add(tom);
    //alternatively
    catsArray[0] = bob;
    catsArray[1] = fluffy;
    catsArray[2] = tom;
}

然后遍历 list\array 做一些事情:

public void groomAll(){
    for (Cat cat : catList){
       cat.groom();
    }
    //alternatively
    for (Cat cat : catArray){
       cat.groom();
    }
}
于 2015-01-17T11:49:41.967 回答
1

你有理由不使用集合吗?例如数组、列表甚至地图。

我的回答是使用其中一种构造,否则我不相信有更简单的方法。

我能想到的最接近的事情是:

Map<String, Object> map = new HashMap<>();
for(int i=1; i<map.size(); i++) {
    System.out.println(map.get("var"+i));
}
于 2015-01-17T11:42:55.237 回答
0

如果 vari 是局部变量,则不可能。如果 vari 都是类的成员,那么可以使用 Reflection API 来实现(参见方法 Class.getField() 和 Class.getDeclaredField()),但是效率非常低。更好地使用集合,并找到替代选项。

于 2015-01-17T11:48:25.627 回答