问题解决了
我正在做一个项目,其中一个数组包含 5 个测试的分数,但用户不必用总共 5 个分数填充数组。有一个按钮显示一个消息框,其中列出了 5 个分数值。用户需要能够在不重新启动程序的情况下连续运行程序两次,每次第二轮到来时,数组仍然保存最后一轮的值。我无法将值设置为零,因为在输入每个分数后都会计算并显示实时平均值,而零会脱离平均值。
这是显示分数的按钮。如果用户输入的分数少于 5 个(5 是数组的大小),则消息框应该只显示 4 个或更少的分数,就像我现在拥有的那样,它为未使用的值显示零。
private void btnDisplayScores_Click(object sender, EventArgs e)
{
for (int x = 0; x < counter; x++)
{
Convert.ToString(scoreArray[x]);
}
MessageBox.Show(scoreArray[0] + Environment.NewLine
+ scoreArray[1] + Environment.NewLine + scoreArray[2]
+ Environment.NewLine+ scoreArray[3] + Environment.NewLine
+ scoreArray[4]);
我们只学会了将 null 与字符串一起使用,我们还没有学习可为 null 的整数和小数。我们希望在不使用可为空的数值类型的情况下做到这一点。
这会重置这些值,以便用户可以开始另一轮。
private void Restart()
{
scoreTotal = 0;
txtScore.Clear();
txtScoreTotal.Clear();
txtScoreCount.Clear();
txtAverage.Clear();
for (int x = 0; x <= counter; x++)
{
scoreArray[x] = 0;
}
counter = 0;
}
也许这会有所帮助。
private void btnAdd_Click(object sender, EventArgs e)
{
int currentScore;
if (counter < 5)
{
if (DataValid() && DataRange())
{
currentScore = Convert.ToInt32(txtScore.Text);
Input(currentScore);
Process();
}
else
{
MessageBox.Show("Data was invalid, please enter valid data.", "Error");
}
counter++;
}
else
{
Restart();
}
txtScore.Focus();
}
编辑* 我错误地认为我需要将数组转换为字符串才能在消息框中显示它,修复了这个问题,但它不是我问题的核心。
我可能会尝试 -1 建议 tonite 或 tommarow
尚未学习列表,数组已声明为全局
edit2* 问题已解决,使用 -1 解决方案,感谢 mfussenegger