2015-10-17 112 views
3

因此,例如我有以下变量: 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等),并且想要更改这些组件的值而无需单独设置它们的值。

+0

什么语言? – PeeHaa

+0

爪哇,对不起模糊 –

+0

为什么没有人在[java]保持规范重复?毫无疑问,这被问过百次。 – BalusC

回答

6

可以与反射做到这一点,如果变量被定义为一类的成员。对于方法参数或局部变量,这是不可能的。一些与此类似:

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

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

+0

我不知道为什么这是downvoted,因为它是真正通过Java中的变量迭代的唯一方法。 – sm4

+0

嘲笑-1的唯一适当的解决方案。 – rustyx

1

您无法循环访问(本地)变量。你可以通过它的元件使用arrayList然后循环:

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

如果数据类型的变量是相同的,我会建议去一个数组。 你可以尝试这样的事情

 String[] Var = {"something","something2","something else"}; 
     for (String var : Var) 
     { 
     System.out.println(var); 
     } 
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); 
    } 
} 
0

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

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

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

试试这段代码。

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); 
     } 

    } 
} 
相关问题