【问题标题】:C# calculator doesn't work with unlike addends [closed]C#计算器不适用于不同的加数[关闭]
【发布时间】:2014-05-12 02:24:19
【问题描述】:

我正在用 C# 开发一个计算器,除了当我添加数字时,它只有在加数相同的情况下才会成功(例如 9 + 9 = 18、6 + 9 = 12)。所以我很困惑。有人能帮帮我吗?

private void button5_Click(object sender, EventArgs e)
{
    b = false;
    number = decimal.Parse(richTextBox1.Text);
    richTextBox1.Text = number + " + ";
    number2 = decimal.Parse(richTextBox1.Text);
    addReady = true;
}

private void button17_Click(object sender, EventArgs e)
{
    if (addReady == true)
    {
        answer = number + number2;
        richTextBox1.Text = Convert.ToString(answer);
        b = true;
    }
}

另外,当我把它放进去时,我的正/负按钮突然开始出现故障,将所有内容都转换为 0。这是怎么回事?

decimal neg;
neg = number * 2;
number = number - neg;
richTextBox1.Text = Convert.ToString(number);

【问题讨论】:

  • 来吧...您正在阅读同一个文本框两次...您是否尝试过调试?写完问题半天你就可以自己找到了……
  • 你肯定很困惑,6 + 9 = 12 什么时候?
  • 什么错字?这就是我想要找出的!
  • @JK 我忍不住笑了... OP,就像 MarcinJuraszek 说的那样,你解析同一个 TextBox 两次。因此,您将在该行中提取第一个小数两次。
  • 我明白了,但我不知道如何解决它。

标签: c# calculator


【解决方案1】:

好的。您要做的是连续两次从文本框中解析string。所以,两次你都会得到完全相同的数字。它不会按照您编写的方式循环。最重要的是,您没有提取表达式。为了让您的生活更轻松,我建议使用 Calculator.NET 第三方库。它解析数学表达式:

http://weblogs.asp.net/pwelter34/archive/2007/05/05/calculator-net-calculator-that-evaluates-math-expressions.aspx

然后是 NCalc(就像 Calculator.NET,这个库非常简单易用):

http://ncalc.codeplex.com/

您也可以利用 Microsoft Script Control,如本答案所示:

https://stackoverflow.com/a/392355/2006048

以防万一链接不起作用,我将代码复制到此处以进行演示(全部归功于原始海报):

MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "VBScript";
string expression = "1 + 2 * 7";
object result = sc.Eval(expression);            
MessageBox.Show(result.ToString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2014-11-26
    • 2014-06-29
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多