有人可以向我解释为什么我的平均值在我运行程序时保持为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);
}
}
答案 0 :(得分:0)
由于average
,sum
和mSize
是整数,因此当您将它们分开时,结果将被截断。
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());
希望这有帮助。