我正在使用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());
}
问题在于当我运行程序,并且输入框里输入了 "a" 这个字符时,我的程序会通过在输出框中显示 "Invalid input" 来处理异常。然而,它接着会计算默认浮点类型的
sin
或 cos
等等。因此,输出框中的答案看起来像是:"invalid input1" 或 "invalid input0"。我提供了一张截图:get_input()
方法后紧接着告诉它追加文本,但我真的不知道如何解决这个问题。我已经试过以 7 种方式重新构建我的代码,但总是有些问题。
float.TryParse
,如果成功则返回 true,否则返回 false(无需抛出异常),然后仅在尝试解析返回 true 时执行计算。 - Timstring
,然后在你的click
事件中解析/处理它。 - Drew Kennedy