2017-02-17 151 views
0

我想使用for-loop打印一個數組中的多個字符串,它將打印完整的名字和姓氏,但僅打印一次。這是我做這個的方法。從一個數組中打印多個字符串作爲單個字符串

這是輸出我得到:

「名字secondName,」

應該有被打印複式全名。

+0

的可能的複製(HTTP [什麼是打印的Java數組的最簡單的方法?]://計算器。問題/ 409784/whats-the-simple-way-to-print-a-java-array) – yarcenahs

回答

0

你非常接近。問題在於,每次迭代TANames時,都要重新設置list。試試這個:

public String getTANames() { 
    String list = ""; 
    for(int i = 0; i < TAList.length; i++){ 
     list += TAList[i].first + " " + TAList[i].second + ", "; 
    } 
    return list; 
} 

所不同的是這條線的位置:list += TAList[i].first + " " + TAList[i].second + ", ";要添加到list沒有設置list

+0

謝謝,它的確有竅門!我有點沮喪,因爲我大部分都知道我有正確的想法。 – yarcenahs

+0

是的,你在正確的軌道上 – SeanKelleyx

+0

如果我的回答對你有幫助,請將它標記爲已接受 – SeanKelleyx

0

在您當前的代碼中,每個循環都會更改列表變量的值。要解決該問題,如下所示與+=替換當前=

列表+ = TAList [I]。首先+ 「」 + TAList [I]。第二+ 「」;

public String getTANames() { 
    String list = ""; 
    for(int i = 0; i < TAList.length; i++){ 
     list += TAList[i].first + " " + TAList[i].second + ", "; 
    } 
    return list; 
} 

希望有所幫助。

1

的這裏的問題是,在每次迭代中,您將創建列表新的存儲位置,所以每執行一次循環中,名單覆蓋值。您可以通過附加到列表來解決此問題,而不是在每次迭代中更改列表的值。

一個側面說明,因爲字符串是在Java中不可變的,for循環的每次迭代,新的內存將被分配給列表。這不是非常有效。你應該改用可變的StringBuilder。它看起來像這樣。

StringBuilder str = new StringBuilder(list); 

然後你就可以追加到STR:

str.append("any string"); 

這相當於STR + 「任何字符串」

使用StringBuilder的,內存將被分配到一次str的和所有的變化將採取到位這是更有效率。最後,您希望返回一個String對象,以便您可以在StringBuilder對象上調用方法toString()將其轉換回String。

所以,最後會是這樣的:

public String getTANames() { 
StringBuilder str = new StringBuilder(""); 
for(int i = 0; i < TAList.length; i++){ 
    str.append(TAList[i].first + " " + TAList[i].second + ", ");   
} 
return str.toString(); 

}

相關問題