在c#中使用[]进行inden错误

时间:2015-05-20 17:53:43

标签: c#

     int average(int [] a, int k)
    {
        int average, s, i, n;

        s = 0;
        for (i = 0; i < k - 1; i++)
        {
            a[i] = Convert.ToInt32(lblSortiranNiz.Items[i]);
            s = s + a[i];
        }
        average = s / k;
        return average;
    }

感谢您的帮助,但现在我不知道如何将它放入我的主程序

     private void button1_Click(object sender, EventArgs e)
     {
        int i, j, n, pom, average1;
        n = lblBrojevi.Items.Count;
        int[] a = new int[n];
        for (i = 0; i < n; i++)
            a[i] = Convert.ToInt32(lblBrojevi.Items[i]);
        for (i = 0; i < n - 1; i++)
        {
            for (j = i + 1; j < n; j++)
                if (a[i] > a[j])
                {
                    pom = a[i];
                    a[i] = a[j];
                    a[j] = pom;
                }
        }
        for (i = 0; i < n; i++)
        {
            lblSortiranNiz.Items.Add(a[i]);
        }
        average1 = prosek(a[i], 3);
        tbaverage.Text = Convert.ToString(average1);
    }

我尝试使用数字3作为k,但它不起作用,它给了我一些错误的小数字。如果可以,请帮助我。

4 个答案:

答案 0 :(得分:1)

您正在使用int作为int的数组。您应该通过使用以下内容替换第一行来修复它:

 int average(int[] a, int k)

答案 1 :(得分:1)

参数名为&#34; a&#34;不是数组,您正在使用索引([])运算符。此外,在计算平均值时,将k视为缺少最后一个元素的元素数量:

int average(int[] a, int k)
{
    int average, s, i, n;

    s = 0;
    for (i = 0; i < k; i++)
    {
        a[i] = Convert.ToInt32(lblSortiranNiz.Items[i]);
        s = s + a[i];
    }
    average = s / k;
    return average;
}

实际上你不需要k参数,因为数组有Length属性。

这似乎是一项功课,但只是要知道,您可以在LINQ中使用Average扩展方法。

答案 2 :(得分:1)

您使用的方法的数据类型是int, 你只需要使用数组数据类型。

就像那样。

int average(int []a, int k)

答案 3 :(得分:0)

为什么你不使用LINQ?这是一个示例:

var avarage = lblSortiranNiz.Items.Select(i=>Convert.ToInt32(i))
                                  .Take(k)
                                  .Sum() / k;