【问题标题】:Getting integer from textbox从文本框中获取整数
【发布时间】:2012-08-09 13:34:41
【问题描述】:

我想写事件处理方法button1_Click来计算学生的成绩是“PASS”还是“FAIL”。如果总分大于或等于 50,则学生通过课程。总分为期中(textbox1)+期末(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# 很陌生,如果我的代码在任何地方有错误,请告诉我

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

【问题讨论】:

  • 点击按钮前你在文本框中输入了什么?
  • 尝试输入字符串Trim(),然后解析为整数
  • 您应该使用int.TryParse 来评估(bool)文本是否可以解析为int

标签: c#


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您在文本框中键入非数字字符并尝试解析文本,则会引发此异常。尝试修剪输入,并绝对考虑将 UI 验证添加到您的表单。

    【讨论】:

      【解决方案3】:

      如果文本框中的文本在 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再次检查文本框中是否有数字

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2012-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-31
        相关资源
        最近更新 更多