2013-12-22 126 views
-1

所以說如果我有一系列字符串整數與名稱,我:i1,i2,i3等,但想要組成一個字符串和整數的每個名稱,如:從創建的字符串獲取字符串整數的值

String i1 = "abc"; 
String i2 = "bca"; 
String i3 = "cba"; 

for (int i = 1; i <= 3; i++) { 
    String a = "i" + i; 
    int aa = Integer.parseInt(a); 
    ArrayList<String>.add(aa); 
} 

我怎麼能做到這一點?這個for循環只是將「i1」,「i2」和「i3」添加到列表中,而不是「abc」,「bca」和「cba」。

+3

Java則沒有(也不可能)動態評估的變量名。使用數組,地圖或列表。 –

+0

我認爲通過使用parseInt(「i1」)它會產生一個相同的值i1,因此恢復到它的值,「abc」等。我想它只是一個新的整數呢? – Ollygrov

+1

在提出問題之前,您應該始終嘗試運行代碼。並閱讀'Integer.parseInt()'的javadoc。 –

回答

0

使用Integer.toString(),其中一個選項可以使用字母字符以及數字來表示String

您還需要創建一個List以將您的String s添加到。

List<String> list = new ArrayList<>(); 

for (int i = 1; i <= 3; i++) { 
    list.add(whatever); 
} 

或者,如果你想存儲字符串到整數的映射,那麼你應該看看Map,大概HashMap

3

您需要使用一些Map實現。

例如:

String[] words = { "abc", "bca", "cba" }; 
Map<String, String> map = new HashMap<String, String>(); 
for (int i = 1; i <= 3; i++) { 
    String a = "i" + i; 
    map.put(a, words[i - 1]); 
} 

最後,在地圖的樣子:

--key-- | --value-- 
------------------- 
    "i1" | "abc" 
    "i2" | "bca" 
    "i3" | "cba" 
4

啊,我誤解你的問題在第一。是的,你可以做你想做的事情。

public class Main { 
    private String i1 = "abc"; 
    private String i2 = "bca"; 
    private String i3 = "cba"; 

    public static void main(String[] args) { 
     new Main(); 
    } 

    public Main(){ 
     for (int i = 1; i <= 3; i++) { 
      String a = "i" + i; 
      String f = null; 
      try { 
       f = (String) this.getClass().getDeclaredField(a).get(this); 
      } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      System.out.println(f); 
     } 
    } 
} 

輸出:

abc 
bca 
cba 

關鍵點:

應該指出,你應該首先考慮使用Map<String, String>結構。其他答案已經爲此提供瞭解釋。

+0

爲什麼這麼複雜? –

+0

@ kocko:因爲這是他實際詢問的問題的答案,與您發佈的不同方法不同。我的答案實際上包含了一行代碼,可以完成這件事,其他所有內容都只是一個try-catch塊或用於演示概念的代碼。我幾乎不會那麼複雜。 –

0

使用String數組:

String[] stringArr = new String[3] 
ArrayList<String> list = new ArrayList<String>(); 

stringArr[0] = "abc"; 
stringArr[1] = "bca"; 
stringArr[2] = "cba"; 

for(int i = 0; i<String.length; i++) 
{ 
    list.add(Integer.parseInt(stringArr[i])); 
} 
相關問題