2010-05-24 38 views
0

我一直在使用這種「邏輯」,在C++和VB成功,但我在Java中捆綁起來...... 簡而言之,在Java中檢索級聯變量的值FOR循環

public void DataProviderExample(String user, String pwd, String no_of_links, 
     String link1, String link2, String link3) { 

for (int i=1;i<=no_of_links;i++) { 
     String link = "link"+i; 
     System.out.println(link); 
} 

現在,如果變量link1link2link3有「X」的值,「Y」及「Z」,一旦運行這個程序,我得到下面的輸出 -

link1 
link2 
link3 

我要的是 -

X 
Y 
Z 

任何想法?

+0

這實際上在VB中工作? – Nitrodist 2010-05-24 19:48:43

+0

我猜他實際上沒有打印字符串''link「+ i',但是做了某種eval(鏈接),它獲得變量值,並在變量鏈接中定義了名稱。上面的代碼與Java最接近。 – 2010-05-24 20:14:20

回答

5

你可以使用可變參數:

public void DataProviderExample(String user, String pwd, String... links) { 

for (String link : links) { 
     System.out.println(link); 
    } 
} 

... 
DataProviderExample("user1", "password1", "X", "Y", "Z"); 
DataProviderExample("user2", "password2", "Q"); 

這樣你就可以在鏈接的所需數量的通過,並且運行時自動地把這些放到一個數組,你可以用一個foreach循環遍歷。

如果是單純的陣列,接聽的話會有更多麻煩的(除非你已經有了,當然在陣列中的鏈接):

public void DataProviderExample(String user, String pwd, String[] links) { ... } 

DataProviderExample("user1", "password1", new String[] {"X", "Y", "Z"}); 
+0

+1 - 我推薦這種方法。您所描述的對VB有效的內容可以使用反射 - 您想要動態地形成變量名稱。 – 2010-05-24 20:31:51

3

爲什麼你不使用數組呢?

0

由於@Jan Kuboschek指出,你應該使用數組。如果沒有,請查看reflection

0

我很感謝答案。我正在嘗試從外部Excel文件中檢索該函數的參數。嘗試你描述的兩種方法,我遇到了「java.lang.IllegalArgumentException:參數類型不匹配」錯誤。任何想法爲什麼? :)

聲明: DataProviderExample(用戶字符串,字符串PWD,串...鏈接){...} 電話: DataProviderExample( 「用戶1」, 「pwd1」, 「X」, 「Y」, 「Z」); DataProviderExample(「user2」,「pwd2」,「X」,「Y」);

我也嘗試了「數組」方法,並得到了相同的參數不匹配錯誤。 DataProviderExample(「user1」,「pwd1」,{「X」,「Y」,「Z」})DataProviderExample(字符串用戶,字符串pwd,字符串[]鏈接){...} 調用: ; DataProviderExample(「user2」,「pwd2」,{「X」,「Y」});

再次,參數,user1,user2,pwd1,pwd2和鏈接數組正在從Excel文件中檢索。

謝謝。

+0

不是最優美的解決方法......但我將動態字符串變量作爲單個字符串傳遞給函數,並將其簡單地轉換爲基於「,」分隔符的數組... – rs79 2010-05-25 14:58:04