2014-02-23 19 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方法将处理它。

相关问题