2014-02-23 50 views
-1

我想在大小爲1000的列表中保存重複1000次的zarb函數的結果。然後我必須增加索引每個計算的列表,以避免將下一個計算保存在前一個計算的相同索引處。我怎樣才能做到這一點?如何增加列表的索引以保存列表中下一個索引的下一個數字

var results = new List<float>(1000); 
for (int z = 0; z < 1000; z++) 
{ 
    results.Add(zarb(sc,z)); 
    //increase the index of resukts 
} 
foreach (var resultwithindex in results.Select((r, index) => new { result = r, Index = index }).OrderByDescending(r => r.result).Take(20)) 
{ 
    MessageBox.Show(string.Format("{0}: {1}", resultwithindex.Index, resultwithindex.result)); 
} 

扎布功能

public float zarb(int userid, int itemid) 
     { 

      float[] u_f = a[userid]; 
      float[] i_f = b[itemid]; 

      for (int i = 0; i < u_f.Length; i++) 
      { 

       result += u_f[i] * i_f[i]; 

      } 
      return result; 

     } 
+0

你不需要像數組一樣明確地增加索引。 – Dexters

+0

這個問題最好使用完整的代碼示例來解決。 List可能不是問題。可能會更好,因爲「爲什麼我的方法的返回值包括以前方法調用的總和?」 – maxwellb

回答

1

不,你不會。 Add方法(令人驚訝地)項添加到列表中。它不會取代任何東西。你應該read MSDN documentationList<T>。另外,不要害怕在詢問之前嘗試和看到結果 - 你會節省時間。

+0

Okey @OndrejTucny。當我運行它時,它會將所有前面的數字添加到下一個數字中。例如,如果數字是1,2,4,5,9,10,17,...當過程完成時輸出就像1, 3,7,12,21,...(它總和所有以前的數字並加到當前索引),而輸出必須是1,2,4,5,9,10,...我編輯了代碼並向其中添加zarb功能 – user3328039

+1

根據這些信息,看起來您對列表沒有任何問題。你可能使用「result」作爲類中的字段,這意味着該值將通過方法調用持續存在。你是否打算在方法開始時浮動結果= 0.0? – maxwellb

+0

沒有看到代碼(也許你可以編輯問題) - 很難說「結果」是什麼。我猜這是在課堂上的一個領域,而不是在方法層面上的一個變量。你有沒有需要zarb之外的「結果」?爲什麼zarb影響其他地方定義的值,而不是使用返回值? ---如果「結果」不受影響,請嘗試添加「float retVal = 0.0;」到方法的頂部,將結果用於「retVal」,並改變「返回結果」;到「result + = retVal; return retVal;」。 – maxwellb

0

也許我不明白這個問題,但是你不需要索引列表。 add方法將處理它。

相關問題