我想使用for循环从数组中打印多个字符串,它将打印一个完整的名字和姓氏,但只打印一次。这是我做这个的方法。
这是我得到的输出:
" firstName secondName,"
应该打印多个全名。
答案 0 :(得分:1)
这里的问题是,在每次迭代中,您为 list 创建一个新的内存位置,因此每次循环执行时, 列表 已覆盖。您可以通过附加到列表而不是在每次迭代中更改列表的值来解决此问题。
旁注,因为字符串在java中是不可变的,对于for循环的每次迭代,都会为 list 分配新的内存。这不是很有效。您应该使用可变的StringBuilder。它看起来像这样。
StringBuilder str = new StringBuilder(list);
然后你可以附加到str:
str.append("any string");
这相当于str +“any string”
使用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();
}
答案 1 :(得分:0)
你非常接近。问题是,每次迭代<!DOCTYPE html>
<html ng-app="myApp">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-controller="MainCtrl">
<div>
This is parent div click below to hide <br />
<span ng-click="hideParent($event)">Click here to hide</span> <br />
<span ng-click="hideParent($event)">or Here</span><br />
<span ng-click="hideParent($event)">or Here</span>
</div>
</body>
</html>
时,您都会继续重置list
。试试这个:
TANames
此区别在于: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
。
答案 2 :(得分:0)
在当前代码中,每个循环都会更改 list 变量的值。要解决此问题,请将当前=
替换为+=
,如下所示:
列出 + = TAList [i] .first +“”+ TAList [i] .second +“,”;
public String getTANames() {
String list = "";
for(int i = 0; i < TAList.length; i++){
list += TAList[i].first + " " + TAList[i].second + ", ";
}
return list;
}
希望有所帮助。