0

问题解决了

我正在做一个项目,其中一个数组包含 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

4

0 回答 0