在处理计算器时,我试图使用字符串和文本框中的双精度来得到答案,并在处理减法,乘法,除法和指数时遇到此错误:
"运营商" - "不能应用于操作数" string"和"加倍""
代码:
private void BtnEqual_Click(object sender, EventArgs e)
{
OperationLbl.Text = "";
switch (operation)
{
case "+":
textBox1.Text = (results + Double.Parse(textBox1.Text).ToString());
break;
case "-":
textBox1.Text = (results - Double.Parse(textBox1.Text).ToString());
break;
case "*":
textBox1.Text = (results * Double.Parse(textBox1.Text).ToString());
break;
case "/":
textBox1.Text = (results / Double.Parse(textBox1.Text).ToString());
break;
case "^":
textBox1.Text = (results ^ Double.Parse(textBox1.Text).ToString());
break;
}
}
在尝试修补并解决此错误后,我无法有效地执行此操作。所以,如果你能够坚持,那将是伟大的,如果不是我明白的情况。
答案 0 :(得分:2)
这个(和它一样)
(results + Double.Parse(textBox1.Text).ToString());
应该是:
(results + Double.Parse(textBox1.Text)).ToString();
您正在将文本解析为double,然后立即调用ToString()将其转换回字符串。您需要在末尾放置ToString()以将结果转换为字符串。
答案 1 :(得分:1)
假设results
是double
,那么它是括号位置:
textBox1.Text = (results + Double.Parse(textBox1.Text).ToString());
应该是:
textBox1.Text = (results + Double.Parse(textBox1.Text)).ToString();
答案 2 :(得分:1)
我认为错误消息是自我解释的,您知道变量result
的类型为double,错误消息表明"Operator "-" cannot be applied to operands "string" and "double""
因此可以理解第二个操作数是字符串,从那里您可以得出结论.ToString()
在此处创建问题。我想为你建议一个不同的方法;你可以这样做:
double currentNumber;
if (double.TryParse(textBox1.Text, out currentNumber))
{
switch (operation)
{
case "+":
textBox1.Text = (results + currentNumber).ToString();
break;
case "-":
textBox1.Text = (results - currentNumber).ToString();
break;
case "*":
textBox1.Text = (results * currentNumber).ToString();
break;
case "/":
textBox1.Text = (results / currentNumber).ToString();
break;
case "^":
textBox1.Text = (results ^ currentNumber).ToString();
break;
}
}
else
{
textBox1.Text = "Invalid input";
}
由于Double.Parse
可能会在输入无效的情况下抛出FormatException
,以避免您按照我的建议继续使用TryParse
。
答案 3 :(得分:0)
您正在ToString
的返回值上调用Double.Parse
。我很确定你想在算术运算的结果上调用ToString
但是你的括号错了。