当我按单击事件添加数组值时,它会给我一个索引异常错误。我想知道为什么会发生以及如何修复它,谢谢。
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
如果您不确定长度或容量,请使用列表