c# - 尝试输出字母等级
问题描述
我正在尝试创建一种将小数转换为字母等级的表格。问题是 letterGrade 在该方法的当前上下文中不存在,但我如何从本质上使其“返回”。我是 C# 新手。我会很感激我能得到的任何帮助。
private void txtNumberGrade_TextChanged(object sender, EventArgs e)
{
txtNumberGrade.Focus();
}
private void txtLetterGrade_TextChanged(object sender, EventArgs e)
{
//下面这一行出错
txtLetterGrade.Text = letterGrade;
//上面这一行的错误
}
private void btnCalculate_Click(object sender, EventArgs e)
{
decimal score = Convert.ToDecimal(txtNumberGrade.Text);
string letterGrade = "";
if (score >= 90)
{
letterGrade = "A";
}
else if (score >= 80)
{
letterGrade = "B";
}
else if (score >= 70)
{
letterGrade = "C";
}
else if (score >= 60)
{
letterGrade = "D";
}
else if (score >= 0)
{
letterGrade = "F";
}
else {
letterGrade = "Z";
}
}
}
解决方案
你可以做的是创建一个函数来返回你需要的成绩。下面我使用了Decimal.TryParse 方法,它将数字的字符串表示形式转换为其 Decimal 等效项,返回值指示转换是成功还是失败。如果它确实成功了,那么score
就会有这个值。
private static string GetGrade(string decGrade)
{
if (decimal.TryParse(decGrade, out decimal score))
{
if (score >= 90)
{
return "A";
}
else if (score >= 80)
{
return "B";
}
else if (score >= 70)
{
return "C";
}
else if (score >= 60)
{
return "D";
}
else if (score >= 0)
{
return "F";
}
else
{
return "Z";
}
}
else { return "NA"; }
}
现在您可以在TextChanged
事件中这样调用它:
private void txtNumberGrade_TextChanged(object sender, EventArgs e)
{
txtLetterGrade.Text = GetGrade(txtNumberGrade.Text);
}
参考:
Decimal.TryParse 方法- https://docs.microsoft.com/en-us/dotnet/api/system.decimal.tryparse?view=netcore-3.1
推荐阅读
- wordpress - 使自定义字段的行为与 WP 注册电子邮件字段相同
- ruby-on-rails - rails 模型复杂关联解释
- c# - SQL Server存储过程问题通过C#
- javascript - 根据条件将值分配给 const 的最佳方法是什么?
- vue.js - 发布请求在 vue js 中不起作用。控制台说 POST http://localhost/3000/cars net::ERR_CONNECTION_REFUSED
- php - Gmail 令牌经常过期
- html - 如何根据纯css中的单元格值为行着色?
- python - 使用 numpy 和 matplot 查找根
- asp.net-core - 在我的 RazorPage 表单中生成类别和子类别
- python - 替代 ulr 不是唯一的 pandas.read_html?