如何将列表框中项目的值添加到C#中的局部变量?

时间:2018-02-13 15:03:18

标签: c# for-loop listbox listboxitems

所以我做了一个实用的工作,涉及要求用户输入0100之间的分数。该计划将跟踪已输入的分数,总分(所有分数的总和)和平均分数。

为了计算总分,我想出了一个使用for循环的想法,它会在我的列表框中循环并将每个分数添加到一个变量(下面)。

int sTotal = 0;
for(int i = 0; i < lstScores.Items.Count; i++)
{
    //Calculation occurs here
}
txtScoreTotal.Text = Convert.ToString(sTotal);

事情是,我不知道该怎么做。我试过搜索无济于事。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

    int sTotal = 0;
    int Average = 0;
    for(int i = 0; i < lstScores.Items.Count; i++)
    {
         bool result = Int16.TryParse(lstScores.Items[i],out int res);
         if (result)
         {
            sTotale += res;        
         }
    }
    Average = sTotal / lstScores.Items.Count;
    txtScoreTotal.Text = Convert.ToString(sTotal);

答案 1 :(得分:0)

最简单的方法是使用这样的foreach循环:

        int sTotal = 0;
        foreach (string item in lstScores.Items)
        {
            sTotal += Int32.Parse(item);
        }
        txtScoreTotal.Text = Convert.ToString(sTotal);

答案 2 :(得分:0)

见这个

int i = 0, result = 0;
while (i < lstScores.Items.Count)
{
   result += Convert.ToInt32(lstScores.Items[i++]);
}

txtScoreTotal.Text = Convert.ToString(result);

我没有尝试过,但你也可以尝试1行解决方案

var sum = lstScores.Items.OfType<object>().Sum(x => Convert.ToInt32(x));
  

如果总和超过int.Max

,则需要处理异常