2016-09-16 9 views
-1

だから、私は2つのラベルで2つの数字を生成するアプリケーションを作成する必要があり、ユーザーは答えとしてこれらの2つの数字の追加値を入力する必要があります。 次に、ユーザーがテキストボックスに正しい解決方法を入力したかどうかを確認するボタンを作成する必要があります。検証ボタンが正しくありませんか?

ただし、私が作成したチェックボタンは毎回「間違った」と答えています。違う?

private void generatebutton_Click(object sender, EventArgs e 

    { 

      //Declaring Variables for Generate button 
      int answer = 0; 
      Random rand = new Random(); 
      var intNum1 = rand.Next(100, 500); 
      var intNum2 = rand.Next(100, 500); 
      answer = intNum1 + intNum2; 


      //Generate integer number 1 in first label 
      firstnumberlabel.Text = intNum1.ToString(); 

      //Generate integer number 2 in second label 
      secondNumberlabel.Text = intNum2.ToString(); 
    } 

    private void checkButton_Click(object sender, EventArgs e) 

     { 
      //Declaring variables for answer label 
      int userInput = 0; 
      int answer = 0; 
      Random rand = new Random(); 
      var intNum1 = rand.Next(100, 500); 
      var intNum2 = rand.Next(100, 500); 
      answer = intNum1 + intNum2; 

      if (int.TryParse(txtanswer.Text, out userInput)) 
      { 
       if (userInput == answer) 
       { 
        // Display success message 
        MessageBox.Show("Correct!"); 
       } 

       else 
       { 
        // Display wrong answer message 
        MessageBox.Show("Incorrect!"); 
       } 
     } 
     else 
     { 
      // show message that invalid input 
     } 
    } 

    private void exitButton_Click(object sender, EventArgs e) 
    { 
     //Closes Application 
     this.Close(); 
    } 

    private void button4_Click(object sender, EventArgs e) 
    { 
     //Clears text box 
     txtanswer.Text = ""; 
    } 
} 

}

+0

タイトルにタグ情報を繰り返す必要はありません**。私は理由のためにそれを削除しました。 **それをもう一度追加しないでください**。ここのタグシステムは非常にうまく動作し、あなたの助けを必要としません。 –

答えて

0

あなたは、ランダムな数字ではなく、オリジナルの2個の乱数の新しいセットにユーザーの回答を比較しています。

checkButton_Clickイベントでは、int answer = 0の後に4行を置き換えます。 answer = int.Parse(firstnumberlabel.Text) + int.Parse(secondnumberlabel.Text);

ユーザが数字を入力せずに答えをチェックしようとした場合に例外を避けるために追加する必要がある入力チェックがまだあります。

+0

ありがとうございます。ユーザーが非数字を入力できないようにtry catchを追加できますか? – Berrick

+0

はい、ユーザーが何も入力せずに「確認」を押した場合には、守備的である必要があります。その場合、値は空白になります。 try/catch例外処理でこれを処理できますが、一般的には例外を避けたい - 非常に遅いです。上記のint.Parseの代わりにint.TryParse()を見てみると、入力が数字であることを確認し、そうでない場合は例外をスローしません。編集:Uthistranの答えは、TryParse()を使ってこれを行う方法の優れた例を示しています。 – Crocoduck

0

次のように変更すると修正されます。あなたが間違った答えを見つけるために新しい乱数を作成しています

private void generatebutton_Click(object sender, EventArgs e 
{ 
     //Declaring Variables for Generate button 
     Random rand = new Random(); 
     var intNum1 = rand.Next(100, 500); 
     var intNum2 = rand.Next(100, 500); 

     //Generate integer number 1 in first label 
     firstnumberlabel.Text = intNum1.ToString(); 

     //Generate integer number 2 in second label 
     secondNumberlabel.Text = intNum2.ToString(); 
} 

private void checkButton_Click(object sender, EventArgs e) 
{ 
    int userInput = 0; 
    int answer = int.Parse(firstnumberlabel.Text) + int.Parse(secondnumberlabel.Text); 
    if (int.TryParse(txtanswer.Text, out userInput)) 
    { 
      if (userInput == answer) 
      { 
       // Display success message 
       MessageBox.Show("Correct!"); 
      } 
      else 
      { 
       // Display wrong answer message 
       MessageBox.Show("Incorrect!"); 
      } 
    } 
    else 
    { 
     MessageBox.Show("Please enter a valid answer!"); 
    } 
} 

private void exitButton_Click(object sender, EventArgs e) 
{ 
    //Closes Application 
    this.Close(); 
} 

private void button4_Click(object sender, EventArgs e) 
{ 
    //Clears text box 
    txtanswer.Text = ""; 
} 
関連する問題