从一个数组中打印多个字符串作为单个字符串

问题描述:

我想使用for-loop打印一个数组中的多个字符串,它将打印完整的名字和姓氏,但仅打印一次。这是我做这个的方法。从一个数组中打印多个字符串作为单个字符串

这是输出我得到:

“名字secondName,”

应该有被打印复式全名。

+0

的可能的复制(HTTP [什么是打印的Java数组的最简单的方法?]://计算器。问题/ 409784/whats-the-simple-way-to-print-a-java-array) – yarcenahs

你非常接近。问题在于,每次迭代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

在您当前的代码中,每个循环都会更改列表变量的值。要解决该问题,如下所示与+=替换当前=

列表+ = 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(); 

}