查找用户类型的数字到数组的平均值

时间:2012-11-07 22:41:42

标签: c# arrays sum average

有人可以向我解释为什么我的平均值在我运行程序时保持为0?我在这里列出了我的项目的整个代码,并且以前从未使用过数组。另外,这个数组的名称是mData吗?我试着阅读我的书,以确定在这些项目中寻找什么,并且没有任何结果。

public partial class frmMain : Form
{

    private const int mSize = 20;
    private int[] mData = new int[mSize];
    private int mIndex = 0;


    private static void Main()
    {
        frmMain main = new frmMain();
        Application.Run(main);
    }
    private frmMain()
    {
        InitializeComponent();
    }

    private void btnEnter_Click(object sender, EventArgs e)
    {
        int num;
        num = int.Parse(txtInput.Text);

        //store num in the array
        mData[mIndex] = num;
        mIndex = mIndex + 1;

        //check for full array
        if (mIndex == mSize)
        {
            //inform user that array is full
            MessageBox.Show("The array is full.");
            btnEnter.Enabled = false;
        }
    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void btnDisplay_Click(object sender, EventArgs e)
    {
        int n;

        for (n = 0; n < mIndex; n++)
            listBoxOutput.Items.Add(mData[n]);
    }

    private void btnAverage_Click(object sender, EventArgs e)
    {

        int sum = 0;
        int average = 0;

        if (mIndex == 0)
        {
            //inform user that array is empty
            MessageBox.Show("The array is empty.");
        }

        //add up the values
        for (int i = 0; i < mData.Length; i++)
        {
            sum += mData[i];
        }

        //divide by the number of values
        average = sum / mSize;

        listBoxOutput.Items.Add("The average of the array is: " + average);
    }

}

3 个答案:

答案 0 :(得分:0)

由于averagesummSize是整数,因此当您将它们分开时,结果将被截断。

   average = sum / mSize;

因此如果sum/mSize小于1,则average将始终等于0

获得带小数点的平均值会将声明更改为

    double average = 0;

和计算到

average = (double)sum / (double)mSize;

答案 1 :(得分:0)

一个问题是您正在使用整数。如果最终值是小于1的小数,则int平均值将存储0.将平均值更改为float将解决此问题。此外,除非您知道整个数组已填满,否则不应除以mSize。用户可以插入一个值,但它将平均为19 0。

答案 2 :(得分:0)

Array有一个内置属性来计算平均值,它返回一个十进制值作为输出。示例如下

int [] integer = new int [] {1,2,3}; Console.WriteLine(integer.Average()的ToString());

希望这有帮助。