从文本框中获取整数

时间:2012-08-13 10:19:40

标签: c#

我想编写事件处理程序方法button1_Click来计算学生的成绩是“通过”还是“失败”。如果总分大于或等于50,则学生通过课程。总分为Midterm(textbox1)+ Final(textbox2)分数。但是,老师可以给学生额外学分(复选框1),这是值10分。结果将出现在textBox3

这是我的代码:

private void button1_Click(object sender, EventArgs e)
        {

            int midtermInt = int.Parse(textBox1.Text);


            int finalInt = int.Parse(textBox2.Text);


            if (checkBox1.Checked)
            {
                if ((midtermInt + finalInt) + 10 >= 50)
                {
                    grade.Text = "PASS";
                }
                else if ((midtermInt + finalInt) + 10 < 50)
                {
                    grade.Text = "FAIL";
                }
            }
            else if (!checkBox1.Checked)
            {
                if ((midtermInt + finalInt) >= 50)
                {
                    grade.Text = "PASS";
                }
                else if ((midtermInt + finalInt) < 50)
                {
                    grade.Text = "FAIL";
                }
            }

当我运行它时,它说“Inut字符串格式不正确.. :( 我是C#的新手,如果我的代码在任何地方出错,请告诉我

输入只是整数而不是文本..

3 个答案:

答案 0 :(得分:1)

如果在文本框中键入非数字字符并尝试解析文本,则会抛出此异常。尝试修剪输入,并且一定要考虑在表单中添加UI验证。

答案 1 :(得分:1)

你应该使用int.TryParse insted int.Parse,它的检查是指定字符串的格式是否正确。 您的代码可能如下所示:

int midtermInt;
if (!int.TryParse(textBox1.Text, out midtermInt))
{
    labelError.Text = "Icorrect value in field 'textBox1'".
    return;
}

答案 2 :(得分:0)

如果TextChanged事件中文本框中的文本格式正确,则可以添加检查:

private void textBox_TextChanged(object sender, EventArgs e)
{
   int val;
   if (textBox.Text.Length == 0 || !int.TryParse(textBox.Text, out val))
      tsPassingScore.Text = "0";
}

在您的点击中,您可以使用int.TryParse

再次检查textBox中是否有数字

您还可以改进代码: 如果最终总和不大于50 - 它会自动变小!如果你引入额外的变量,它将更具可读性 - 为教师提供额外的信用:

int extraCredit = checkBox1.Checked ? 10 : 0;
int finalScore = midtermInt + finalInt + extraCredit;
if (finalScore >= 50)
  grade.Text = "PASS";
else
  grade.Text = "FAIL";