C# if statement with array.length

本文关键字:array length with statement if | 更新日期: 2023-09-27 18:30:28

我有一个数组和一个if语句,由于某种原因,它没有做我想让它做的事情。因此,用户必须在文本框中输入 5 个数字,然后程序应将其存储在数组中,这里都很好。

但是,如果陈述正确。当用户输入最终数字时,它会崩溃。如果我将<=更改为<代码运行良好,但不存储最终输入。

public partial class Form1 : Form
{
    int i = 0;
    int averageOf5;
    int[] numbers = new int[4];
    public Form1()
    {
        InitializeComponent();
    }
    private void btnCalculate_Click(object sender, EventArgs e)
    {
        if ( i <= numbers.Length)
        {
            numbers[i] =  Convert.ToInt32(textBoxUserNumbers.Text);
            i = i + 1;
            textBoxUserNumbers.Text = String.Empty;
        }
        else
        {
            int Added5 = 0;
            Added5 = numbers.Sum(); 
            averageOf5 = Added5 / numbers.Length;
            textBoxAverageResult.Text = Convert.ToString(averageOf5);                 
        }
    }
    //Just for test purpose
    private void button1_Click(object sender, EventArgs e)
    {
        foreach (int numbersOutput in numbers)
        {
            //textBoxAverageResult.Text = numbersOutput; 
            MessageBox.Show(Convert.ToString(numbersOutput));
        }
    }
}

C# if statement with array.length

你应该用 5 而不是 4 的大小声明你的数组

int[] numbers = new int[5];

然后这将按预期工作:

if(i < numbers.Length)

您的问题在于数字数组的声明:

int[] numbers = new int[4];

应该是

int[] numbers = new int[5];

您从<=<所做的更改是正确的。您的数组现在的长度为 5,但数组的索引为 0,您的 i 变量应通过 0,1,2,3,4