从一个数组中打印多个字符串作为单个字符串
我想使用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