0

問題が解決しました

配列が 5 つのテストのスコアを保持するプロジェクトに取り組んでいますが、ユーザーは合計 5 つのスコアで配列を埋める必要はありません。5 つのスコア値をリストするメッセージ ボックスを表示するボタンがあります。ユーザーは、プログラムを再起動せずにプログラムを 2 回続けて実行できる必要があります。値をゼロに設定することはできません。これは、各スコアが入力された後に実際の平均が計算されて表示され、ゼロが平均から外れるためです。

スコアを表示するボタンです。ユーザーが 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 許容の整数と小数については知りませんでした。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* 問題が解決しました。mfussenegger のおかげで、-1 ソリューションを使用しました

4

0 に答える 0