0

有人可以向我解释为什么当我运行我的程序时我的平均值一直为 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);
    }

}
4

3 回答 3

0

因为average, sum, 和mSize是整数,所以当你将它们相除时,结果将被截断。

   average = sum / mSize;

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

获得平均有小数点将声明更改为

    double average = 0;

和计算

average = (double)sum / (double)mSize;
于 2012-11-07T22:46:55.603 回答
0

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

于 2012-11-07T22:48:54.327 回答
0

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

int[] 整数 = 新 int[] { 1, 2, 3 }; Console.WriteLine(integer.Average().ToString());

希望这可以帮助。

于 2012-11-07T23:47:48.687 回答