将数组列表中的数字相加

本文关键字:数字 数组 列表 | 更新日期: 2023-09-27 17:57:15

我正在制作一个应用程序,它将为我提供用户插入的数字的平均值、中值和范围。
但我似乎不能将数字相加,然后将它们除以二。
这是我尝试的:

    public static String Find_Mean()
    {
        int Number = 0;
        for (int size = 0; size < list.Count; size++)
        {
            Number = Convert.ToInt16(list[size].ToString());
            Number += Number;
        }
        int Final_Number = Number / 2;
        return Convert.ToString(Final_Number);
    }

我想做的是将数组列表中的所有数字相加,然后将它们除以 2。

将数组列表中的数字相加

尝试使用 Linq:

 int[] x;
 x.Average();
 x.Max();
 x.Min();
Number = Convert.ToInt32(list[size].ToString());

您在此处的每次迭代都会覆盖数字的值。

您在此处重新分配数字的值:

for (int size = 0; size < list.Count; size++)
{
    Number = Convert.ToInt16(list[size].ToString());
    Number += Number;
}     

试试这个:

for (int size = 0; size < list.Count; size++)
{
    Number += Convert.ToInt16(list[size].ToString());
}     

每次您在循环中设置数组列表元素的Number并覆盖总计时,这就是您没有获得总数的原因。您需要使用单独的变量来维护总计。像这样:

int Number = 0;
int Total = 0;
for (int size = 0; size < list.Count; size++)
{
    Number = Convert.ToInt16(list[size].ToString());
    Total += Number;
}
int Final_Number = Total / 2;

如果您使用的是 .Net 2.0 或更高版本,那么最好使用通用列表List<int>

您还可以将循环中的数字转换更改为:

Number = Convert.ToInt32(list[0]);

由于Convert.ToInt32对对象类型也有重载,而且如果你的数字是 int 类型,那么它Int32不是Int16

以下是我目前用来计算一些简单统计数据的方法:

private void CalculateStatistics(IEnumerable<Double> valuesToAggregate)
{
    // We need to iterate multiple times over the values, so it makes
    // sense to create a list to improve performance.
    var aggregateMe = valuesToAggregate.ToList();
    if (aggregateMe.Count > 0)
    {
        // To calculate the median, the simplest approach
        // is to sort the list.
        aggregateMe.Sort();
        // Cause we already sorted the list,
        // the min value must be available within the first element.
        Min = aggregateMe[0];
        // the max value must be available within the last element.
        Max = aggregateMe[aggregateMe.Count - 1];
        // The average has really to be calculated, by another iteration run.
        Mean = aggregateMe.Average();
        // Taking the median from a sorted list is easy.
        var midpoint = (aggregateMe.Count - 1) / 2;
        Median = aggregateMe[midpoint];
        // If the list contains a even number of element,
        // the median is the average of the two elements around the midpoint.
        if (aggregateMe.Count % 2 == 0)
            Median = (Median + aggregateMe[midpoint + 1]) / 2;
    }
    else
    {
        // There is no value available to calculate some statistic.
        Min = Double.NaN;
        Max = Double.NaN;
        Mean = Double.NaN;
        Median = Double.NaN;
    }
}
请注意,您

也许可以改进此特定实现,具体取决于您获得的数据类型(字符串、双精度等)以及它们已经存储的方式(它们是否已经作为允许您操作的列表等?

public static String Find_Mean()
{
    List<int> integerList = list.Select(q => int.Parse(q)).ToList();
    var result = integerList.Sum() / 2;
    return result.ToString();
}