0

2つの乱数変数をテキストボックスに入力されたint値と比較して乗算しようとしています。正しい増分である場合、正しい答えは増加しませんが、増分は単独で機能しますが、テキストボックスでは機能しません。

private void button1_Click(object sender, EventArgs e)
{
    int x = Randomnumber.Next(12);
    int z = Randomnumber.Next(12);

    //int cv = +correct;
    textBox2.Text = x.ToString();
    textBox3.Text = z.ToString();

    int s = x * z;
    if (s == int.Parse(textBox4.Text))
    {
        correct++;
        numbercorrect.Text = correct.ToString();
    }
}
4

4 に答える 4

2

編集これは、ボタンが押される前にユーザーに推測を入力させようとしていることを前提としています。あなたがやろうとしていることは正確に混乱しているので、私はこの免責事項をここに置くと考えました。

現在のコードサンプルを見て、textBox4.Textを解析しようとしていますが、コードサンプルのどこにもtextBox4.Textを設定していません。textBox4.Textがstring.Emptyの場合、int.Parseは例外をスローします。

Int.TryParseを実行することも検討する必要があります。これにより、例外をスローせずに機能したかどうかがわかります。

編集:これは推測ゲームなので、続行する前にtextBox4のユーザーのエントリを検証する必要があります。

private void button1_Click(object sender, EventArgs e)
{
    int answer;
    if(!int.TryParse(textBox4.Text, out answer))
    {
        MessageBox.Show("Please Enter A Valid Integer.");
        return;
    }
    int x = Randomnumber.Next(12);
    int z = Randomnumber.Next(12);

    //int cv = +correct;
    textBox2.Text = x.ToString();
    textBox3.Text = z.ToString();

    int s = x * z;
    if (s == answer)
    {
        correct++;
        numbercorrect.Text = correct.ToString();
    }
}
于 2012-11-06T01:30:51.627 に答える
0

このサブルーチンは、Button1が押されるとすぐに実行されます。これにより、ユーザーが乗算できる2つの乱数が表示されます。(TB2およびTB3で表示されます。)

これで、これらの数値が表示されるとすぐに(そして、ユーザーが回答を入力する前に)、プログラムはTB4の値をチェックします。これは空であり、解析が試行されるとエラーをスローします。

これを2つのボタンを持つ2つのサブルーチンに分割してみてください。1つは新しい問題を表示するためのボタンで、もう1つは答えを確認するためのボタンです。

編集:コードが追加されました。(注:私はこれをフリーハンドで作成しました。コンパイルされるかどうかはわかりません...一般的な考え方を理解してください。ボタンの名前に注意してください。)

//This routine sets up the problem for the user.
private void btnGenerateProblem_Click(object sender, EventArgs e) { 
  //Get 2 random factors
  int x = Randomnumber.Next(12);
  int z = Randomnumber.Next(12);

  //Display the two factors for the user
  textBox2.Text = x.ToString(); 
  textBox3.Text = z.ToString(); 
}

//This routine checks the user's answer, and updates the "correct count"
private void btnCheckAnswer_Click(object sender, EventArgs e) { 
  //Get the random numbers out of the text boxes to check the answer
  int x = int.Parse(textBox2.Text);
  int z = int.Parse(textBox3.Text);

  //Compute the true product
  int s = x * z; 

  //Does the true product match the user entered product?
  if (s == int.Parse(textBox4.Text))  {
    correct++; 
    numbercorrect.Text = correct.ToString(); 
  }
}

の先頭に確認コードを追加しbtnCheckAnswer_Clickます。

于 2012-11-06T01:41:46.083 に答える
0

テキストボックスの値を2つのランダムな値の積と比較しています。ボタンを押す前にこれらの2つの乱数が何であるかを知らない限り、ifは失敗します。

于 2012-11-06T01:10:32.760 に答える
0
    private void button1_Click(object sender, EventArgs e)
    {


        int result = Convert.ToInt32(textBox4.Text); int x, z;

        if (Convert.ToInt32(textBox2.Text) * Convert.ToInt32(textBox3.Text) == result)
        {
            correct++;
            numbercorrect.Text = correct.ToString();
            Randomnumber.Next(12);
            textBox2.Text = Randomnumber.Next(12).ToString();
            textBox3.Text = Randomnumber.Next(12).ToString();

        }

}

于 2012-11-06T23:29:09.710 に答える