如何让一个String变量有多个实例?

时间:2015-01-08 02:30:25

标签: java

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循环运行它取代了第一项的统计数据,只返回被替换的统计数据。

有解决方法吗?我需要根据数组列表大小返回所有项目的统计信息。

3 个答案:

答案 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();
    }