2016-09-16 67 views
-1

因此,我需要製作一個應用程序,它在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

你的用戶的答案比較,以一個新的組隨機數字,而不是原來的兩個隨機數。

在您的checkButton_Click事件中,替換int answer = 0之後的4行;有類似answer = int.Parse(firstnumberlabel.Text) + int.Parse(secondnumberlabel.Text);

仍然需要添加一些輸入健全性檢查,以避免用戶嘗試在不提供數字的情況下檢查答案時出現異常。

+0

謝謝。我可以添加一個try catch來防止用戶輸入非數字嗎? – Berrick

+0

是的,但您仍然需要防禦用戶不輸入任何內容並點擊「檢查」的情況。在這種情況下,該值將爲空白。儘管你可以通過try/catch異常處理來處理這個問題,但通常你想避免異常 - 它們非常緩慢。你可能想看看int.TryParse()而不是上面提供的int.Parse,它將確保輸入是一個數字,如果不是,則不會拋出異常。編輯:下面的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 = ""; 
}