I am new to C#. I'm trying to make a calculator, but the following error occurred:
输入字符串的格式不正确.
这是代码的摘要:
double num1, num2, result;
private void button14_Click(object sender, EventArgs e)
{
num1 = Convert.ToDouble(textBox1.Text);
textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text); **//ERROR OCCURED HERE**
result = num1 - num2;
}
private void button13_Click(object sender, EventArgs e)
{
num1 = Convert.ToDouble(textBox1.Text);
textBox1.Text = String.Empty;
num2 = System.Double.Parse(textBox1.Text); **//ERROR OCCURED HERE**
result = num1 + num2;
}
Run Code Online (Sandbox Code Playgroud)
如何将字符串转换为double类型?
And*_*ard 11
还要记住,Parse方法依赖于操作系统的文化来执行转换,因此请尝试将代码更改为
num2 = double.Parse(textBox1.Text, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
您也可以考虑使用
double.TryParse
Run Code Online (Sandbox Code Playgroud)
更好的异常处理方法.
您想用这段代码实现什么目的?看来你的算法是错误的。
正如其他人所说,这段代码
textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text);
Run Code Online (Sandbox Code Playgroud)
会抛出异常,因为空字符串无法转换为 Double!
所以,我想知道你为什么重置你的字段。我想了一会儿,也许我明白你想做什么。假设您在 TextBox1 中键入一个数字。然后你按“-”按钮进行减法,然后你想输入第二个数字来查看结果。是这样吗?如果是,您编写的代码将不会等待您的下一次输入!
事实上,当您单击该按钮时,它只是执行您编写的所有行。我会写这样的东西。
double num1, num2, result;
string operation;
private void button14_Click(object sender, EventArgs e) //Minus Button
{
if (textBox1.Text != String.Empty) //Added if statement to see if the textBox is empty
num1 = Convert.ToDouble(textBox1.Text);
else
num1 = 0; //If textBox is empty, set num1 to 0
textBox1.Text = String.Empty;
operation = "-";
}
private void button13_Click(object sender, EventArgs e) //Equals Button
{
if (textBox1.Text != String.Empty)
num2 = Convert.ToDouble(textBox1.Text);
else
num2 = 0;
if (operation == "-")
{
result = num1 - num2;
textBox1.Text = Convert.ToString(result);
}
if (operation == "+")
{
//You got it
}
//And so on...
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果字符串为空,这将始终抛出异常,所以我添加了一个控件。如果字符串为空,则值为零。