我想编写事件处理程序方法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#的新手,如果我的代码在任何地方出错,请告诉我
输入只是整数而不是文本..
答案 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
您还可以改进代码: 如果最终总和不大于50 - 它会自动变小!如果你引入额外的变量,它将更具可读性 - 为教师提供额外的信用:
int extraCredit = checkBox1.Checked ? 10 : 0;
int finalScore = midtermInt + finalInt + extraCredit;
if (finalScore >= 50)
grade.Text = "PASS";
else
grade.Text = "FAIL";