我正在使用Visual C#设计一个简单的计算器,但我遇到了一个恼人的运行时错误(这对于静态类型的语言来说很有趣).
首先让我告诉你部分代码:
private float get_input()
{
try
{
return float.Parse(textBox1.Text);
}
catch
{
textBox2.Clear();
textBox2.AppendText("Invalid Input");
return 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
textBox2.Clear();
float v = get_input();
textBox2.AppendText((Math.Sin(v)).ToString());
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行该程序,并让我们说,例如,我输入"a"的输入框,我的程序并通过显示"无效的输入"到输出箱处理异常.然而,它然后继续计算默认浮点类型的sin或cos(等).所以输出框中的答案如下:"invalid input1"或"invalid input0".我提供了截图:

我确实意识到这是因为我告诉它在调用get_input()方法后立即附加文本,但我真的不知道如何找到解决方法.我试过用7种方式重构我的代码,但总会出错.
使用TryParse而不是try ... catch
private void button1_Click(object sender, EventArgs e)
{
textBox2.Clear();
float result;
if (float.TryParse(textBox1.Text, out result))
{
textBox2.AppendText(Math.Sin(result).ToString());
}
else
{
textBox2.Text = "Invalid Input";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |