有没有办法循环变量名称?

时间:2015-10-17 10:38:07

标签: java loops variables for-loop

例如,我有以下变量: Var1,Var2,Var3,Var4,Var5 - 共5个变量。 所有都有独特的数据,我想使用for循环循环它们。

//String Var1 = something, Var2 = something etc..
for (int i = 1; i <= 5; i++)
{
Var(i) = "something else";
}
//i.e I change Var(1), Var(2) etc.. to something else respectively.

为了进一步澄清,最终我想应用此方法来迭代我的程序中的多个组件。我有大量具有样式名称的组件(例如label1,label2,label3等),并且想要更改这些组件的值而无需单独设置它们的值。

6 个答案:

答案 0 :(得分:5)

如果将变量定义为类的成员,则可以使用反射执行此操作。对于方法参数或局部变量,它是不可能的。类似的东西:

Class currentClass = getClass();
Field[] fields = currentClass.getFields();
for (Field f : fields) {
  System.out.println(f.getName());
}

如果您打算更改值,它会变得有点复杂,因为您还必须考虑变量的类型。例如。您可以将String分配给Object类型的变量,但不能反过来。

答案 1 :(得分:3)

如果变量的数据类型相同,我建议去一个数组。 你可以试试这样的东西

        String[] Var = {"something","something2","something else"};
        for (String var : Var)
        {
        System.out.println(var);
        }

答案 2 :(得分:1)

您无法循环(本地)变量。您可以使用arrayList,然后遍历其元素:

for (Object item : myListOfObjects) {
    // do the processing
}

答案 3 :(得分:0)

使用Java 8 Arrays就像这样简单:

Arrays.stream(varArray).forEach(System.out::println);

用法:

public class LoopVariables {
    public static void main(String[] args) {
        String[] varArray = new String[]{"Var1", "Var2", "Var3", "Var4", "Var5"};
        Arrays.stream(varArray).forEach(System.out::println);
    }
}

答案 4 :(得分:0)

只要所有变量使用相同的类型,您就可以使用Array来存储所有变量。然后,您可以使用for循环遍历数组。像这样:

     String[] V = {"var1","var2","var3","var4","var5"};
    int arraylength = V.length;

    for(int i = 0; i<arraylength; i++){
        System.out.println(V[i]);
    }

答案 5 :(得分:-2)

试试这段代码。

public class Main {

    public static void main(String[] args) {
        Insan i1[]=new Insan[5];
        i1[0].name="Ali";
        i1[0].age=19;
        i1[1].name="Pakize";
        i1[1].age=29;
        i1[2].name="Kojiro Hyuga";
        i1[2].age=30;
        i1[3].name="Optimus Prime";
        i1[3].age=40;
        for (int ib=0; ib < 4; ib++) {
            System.out.println("Name: " + i1[ib].name + " Age: "+i1[ib].age);
        }

    }
}