【发布时间】:2017-09-22 23:24:28
【问题描述】:
我正在使用 System.Windows.Forms 做这个计算器,每次我尝试进行平方根、余弦、正弦或正切运算并点击 Equals 按钮时,它都会停止并告诉我“System.FormatException:输入字符串不是格式正确”,我不知道为什么。
这是我的 buttonEquals_Click 事件:
private void buttonEquals_Click(object sender, EventArgs e)
{
double num2;
double answer;
num2 = double.Parse(textBoxResult.Text);
switch (theOperator)
{
case "+":
answer = resultValue + num2;
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "-":
answer = resultValue - num2;
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "×":
answer = resultValue * num2;
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "÷":
answer = resultValue / num2;
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "sqrt":
answer = Math.Sqrt(resultValue);
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "exp":
answer = Math.Pow(resultValue, num2);
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "sin":
answer = Math.Sin(resultValue);
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "cos":
answer = Math.Cos(resultValue);
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
case "tan":
answer = Math.Tan(resultValue);
textBoxResult.Text = answer.ToString();
resultValue = 0;
break;
default:
answer = 0;
break;
}
}
这是我的 SqrtButton_Click 事件和 DivisionButton_event(因此您可以看到 DivisionButton 确实有效):
private void SqrtButton_Click(object sender, EventArgs e)
{
resultValue = resultValue + double.Parse(textBoxResult.Text);
theOperator = "sqrt";
textBoxResult.Clear();
}
private void DivisionButton_Click(object sender, EventArgs e)
{
resultValue = resultValue + double.Parse(textBoxResult.Text);
theOperator = "÷";
textBoxResult.Clear();
}
如果有任何帮助,我将不胜感激。
编辑:异常出现在:num2 = double.Parse(textBoxResult.Text);
【问题讨论】:
-
当您在
SqrtButtonClick中设置断点时,调试器会告诉您什么?该值是否适合传递给double.Parse?当您检查resultValue时,在"sqrt"的case中呢?该值是否适合传递给函数sqrt? -
现在你有答案了。 输入字符串无效
-
它没有到达下一行。它在
num2 = double.Parse(textBoxResult.Text);处停止,但如果我将断点放在casefor Division 中,它确实会进入案例。 -
@HernánCasillas 断点在 Visual Studio 中非常简单,它们是你的朋友。祝你好运!
-
@IanRay 谢谢,问题已得到解答。
标签: c# .net winforms exception calculator