2012-09-11 23 views
0

我正在爲一個作業的一段代碼工作,我正在做atm,而且我完全被一點點卡住了。將數組列表轉換爲單個字符串

我需要將數組列表的內容轉換爲字符串或字符串的形式,該字符串可以輸入到toString()以便將其打印到屏幕上。

public String toString(){ 
    String full; 
    full = (this.name + this.address + "\n" + "Student Number = " + this.studentId); 
    for (int i = 0; i < cs.size(); i++) { 
     full.append(cs[i]); 
    return full; 

的片的上面的代碼是其中i試圖3個varaibles和陣列列表的內容組合成一個單一的字符串格式。

不幸的是它產生一個錯誤「的類型的表達式必須是一個數組類型,但它解析成ArrayList的」

感謝您的幫助。

傑克

+1

您需要使用StringBuilder而不是String來構建字符串。 –

+0

我推薦使用'StringBuilder'而不是''''作爲'String'。 – 2012-09-11 14:22:01

回答

5

CS是數組列表,所以你必須做得到操作,而不是[](這是數組訪問)

它應該是這樣的:

full.append(cs.get(i)); 

full.append(cs[i]); 

編輯:正如assylis說的,full應該是StringBuilder不僅僅是String,因爲String不支持append()方法。

StringBuilder full = new StringBuilder();

+1

@assylias:是的,編輯了我的答案。我比其他部分更專注於錯誤。 – kosa

+0

好吧不好給它一個鏡頭謝謝 –

+0

它只適用於一點修改,非常感謝您的幫助。 –

2

您正在試圖訪問ArrayList,就好像它是一個原始陣列(利用繞指數的方括號)。嘗試使用get(int index)方法。

cs.get(i); 
0

不能索引的ArrayList像一個數組,你需要的get(index)方法。更好的是,使用增強的for循環,因爲不建議對列表進行索引,因爲實現可能會更改爲LinkedList

我也建議使用效率的StringBuilder

public String toString() { 
    StringBuilder full = new StringBuilder(); 
    full.append(this.name); 
    full.append(this.address); 
    full.append("\n"); 
    full.append("Student Number = "); 
    full.append(this.studentId); 
    for (String s: cs) 
     full.append(s); 
    return full.toString(); 
} 
2

Apache Commons StringUtils有不同品種的join()方法意味着你不必這樣寫自己。您可以指定分隔符,甚至是前綴/後綴。

我建議你看一下Apache的共享,不只是這一點,但對於很多其他有用的東西。

0

到位 「CS [I]」 的只要使用 「cs.get(I)」。 as cs是一個ArrayList而不是一個Array。

,還可以使用全 =滿+ cs.get(ⅰ);而不是full.append(cs.get(i));

爲字符串類型沒有一個append方法。

0

請注意,由於您沒有在ArrayList的每個元素之間放置任何間隔符,因此可能無法讀取。考慮使用番石榴的Joiner類。

所以不是

for (...) 
    s.append(y); 

如果將

a.append(Joiner.on(" ").join(yourList)); 

木匠也比for循環更有效,因爲它採用了StringBuilder內部。