" examScores[countOfExams] = double.Parse(examScoresTextBox.Text);"上的索引超出范围异常



当我按单击事件添加数组值时,它会给我一个索引异常错误。我想知道为什么会发生以及如何修复它,谢谢。

using System;
using System.Windows.Forms;

namespace ArrayTestCalculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        double total = 0;
        double average = 0;
        double scoreInput = 0;
        int countOfExams = 0;
        double[] examScores;
        double count = 0;
        //field array declare

        private void enterBtn_Click(object sender, EventArgs e)
        {
            countOfExams = int.Parse(numOfExamsTextBox.Text);
            examScores = new double[countOfExams];
            examLabel.Text = "Exam 1: ";

            label1.Visible = false;
            numOfExamsTextBox.Visible = false;
            enterBtn.Visible = false;
            examLabel.Visible = true;
            examScoresTextBox.Visible = true;
            addBtn.Visible = true;

        }

        private void addBtn_Click(object sender, EventArgs e)
        {
            examLabel.Text = "Exam " + (countOfExams +1) + ":";
            examScores[countOfExams] = double.Parse(examScoresTextBox.Text);
            countOfExams++;
            examScoresTextBox.ResetText();
            examScoresTextBox.Focus();

            if(countOfExams >= examScores.Length)
            {
                MessageBox.Show("hoise vaya");
            }

        }
        private void clearBtn_Click(object sender, EventArgs e)
        {
            Array.Clear(examScores, 0, examScores.Length);
            ClearAll();
        }
        private void exitBtn_Click(object sender, EventArgs e)
        {
            this.Close();                       
        }
        public void ClearAll()
        {
            examLabel.Text = "Exam:";
            examScoresTextBox.ResetText();
            numOfExamsTextBox.ResetText();
        }
        private void calcBtn_Click(object sender, EventArgs e)
        {
        }

    }
}

在您的enterBtn_Click的第一行中

countOfExams = int.Parse(numOfExamsTextBox.Text);

我想您正在使用countOfExams作为数组的总长度。

在您的addBtn_Click的第二行中,

examScores[countOfExams] = double.Parse(examScoresTextBox.Text);
countOfExams++;

我想您正在使用countOfExams来跟踪考试的实际数量。因为countOfExams已经设置为长度,所以它导致OutOfRangeException

因此,我建议您在数组的总长度上使用另一个变量(例如局部变量)

var size = int.Parse(numOfExamsTextBox.Text);
examScores = new double[size];

double []考试;已定义为数组,如果您不调用Enterbtn_Click,则永远不会初始化理想情况下,

您应该首先初始化/检查它是否通过

进行初始化
double[] examScores = new double[<length>];

另外,计数器从0开始,而不是1

如果您不确定长度或容量,请使用列表

最新更新