public String foodstats (){
String foodstats = "";
for ( int i = 0; i < consumables.size(); i++){
foodstats = "Name: " + consumables.get(i).getName() + "\tNutrition: " + consumables.get(i).getNValue() + "\tStamina: " + consumables.get(i).getStamina() + "\n" ;
}
return foodstats;
}
所以这会返回:Name: Water Nutrition: 30 Stamina : 15
我意识到为什么这样做,第二次for循环运行它取代了第一项的统计数据,只返回被替换的统计数据。
有解决方法吗?我需要根据数组列表大小返回所有项目的统计信息。
答案 0 :(得分:1)
我认为你要找的是StringBuilder
,在这种情况下比+=
连接效率更高:
public String foodstats (){
StringBuilder foodstats = new StringBuilder();
for ( int i = 0; i < consumables.size(); i++){
foodstats.append("Name: " + consumables.get(i).getName() + "\tNutrition: " + consumables.get(i).getNValue() + "\tStamina: " + consumables.get(i).getStamina() + "\n");
}
return foodstats.toString();
}
答案 1 :(得分:1)
在循环中创建StringBuilder
并使用append(...)
。完成后,请在结果上调用toString()
,如下所示:
StringBuilder res = new StringBuilder();
for ( int i = 0; i < consumables.size(); i++){
res.append("Name: " + consumables.get(i).getName() + "\tNutrition: " + consumables.get(i).getNValue() + "\tStamina: " + consumables.get(i).getStamina() + "\n");
}
return res.toString();
注意:您也可以使用foodstats += ...
语法,但这样做会较差,因为循环的每次迭代都会创建一个丢弃的临时对象。
答案 2 :(得分:1)
public String foodstats()
{
StringBuilder foodstats = new StringBuilder();
for (int i = 0; i < consumables.size(); i++)
{
foodstats.append("Name: ");
foodstats.append(consumables.get(i).getName());
foodstats.append("\tNutrition: ");
foodstats.append(consumables.get(i).getNValue());
foodstats.append("\tStamina: ");
foodstats.append(consumables.get(i).getStamina());
foodstats.append("\n");
}
return foodstats.toString();
}