2015-01-08 73 views
0
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

什麼是理想的輸出 – Dici

+3

這是一個很難理解你的目標到底是什麼在這裏,但好像你可能想使用'+ ='而不是'='。 (但今天我的思維能力稍差一些。) – apnorton

+2

或者你想返回'List '而不是'String'。 –

回答

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(); 
} 
+0

這很好地工作。雖然我很好奇.append做什麼? –

+0

'StringBuffer'包含一個字符數組,並在必要時擴展它的大小。基本上,你可以認爲它是一個字符的數組列表。因此,'append'只是試圖將輸入字符串的字符寫入底層數組中。如果沒有足夠的空間,則分配一個更大的數組,將先前的數組複製到其中,最後將輸入字符串的字符寫入末尾 – Dici

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 += ...語法了,但是這將是劣勢,因爲每次循環將創建一個扔掉的臨時目的。

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(); 
    } 
相關問題