2015-10-17 108 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); 
     } 

    } 
} 
相關問題