我想使用for-loop打印一個數組中的多個字符串,它將打印完整的名字和姓氏,但僅打印一次。這是我做這個的方法。從一個數組中打印多個字符串作爲單個字符串
這是輸出我得到:
「名字secondName,」
應該有被打印複式全名。
我想使用for-loop打印一個數組中的多個字符串,它將打印完整的名字和姓氏,但僅打印一次。這是我做這個的方法。從一個數組中打印多個字符串作爲單個字符串
這是輸出我得到:
「名字secondName,」
應該有被打印複式全名。
你非常接近。問題在於,每次迭代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
。
謝謝,它的確有竅門!我有點沮喪,因爲我大部分都知道我有正確的想法。 – yarcenahs
是的,你在正確的軌道上 – SeanKelleyx
如果我的回答對你有幫助,請將它標記爲已接受 – SeanKelleyx
在您當前的代碼中,每個循環都會更改列表變量的值。要解決該問題,如下所示與+=
替換當前=
:
列表+ = 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;
}
希望有所幫助。
的這裏的問題是,在每次迭代中,您將創建列表新的存儲位置,所以每執行一次循環中,名單是覆蓋值。您可以通過附加到列表來解決此問題,而不是在每次迭代中更改列表的值。
一個側面說明,因爲字符串是在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();
}
的可能的複製(HTTP [什麼是打印的Java數組的最簡單的方法?]://計算器。問題/ 409784/whats-the-simple-way-to-print-a-java-array) – yarcenahs