【问题标题】:Calculation method not reading input [duplicate]计算方法不读取输入[重复]
【发布时间】:2019-03-18 15:05:19
【问题描述】:

我遇到了一个问题,即计算方法不断返回结果的默认值,并且该方法似乎没有读取表单中运算符的输入。

有谁知道我做错了什么?

这是我的代码:

namespace Prac5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnCalculate_Click(object sender, EventArgs e)
        {
            try
            {
                decimal Operand1 = Convert.ToDecimal(txtOperand1.Text);
                decimal Operand2 = Convert.ToDecimal(txtOperand2.Text);
                string Operator = Convert.ToString(txtOperator);

                if ((Operand1 <= 1000000 && Operand1 >= 1) && (Operand2 <= 1000000 && Operand2 >= 1))
                {                   
                    decimal Result = Calculation(Operand1, Operand2, Operator);
                    Result = Math.Round(Result, 4);
                    txtResult.Text = Result.ToString();                  
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n\n" +
                ex.GetType().ToString() + "\n" +
                ex.StackTrace, "Exception");
            }         
        }

        private decimal Calculation(decimal Operand1, decimal Operand2, string Operator)
        {           
            decimal Result = 0;
            switch (Operator = Convert.ToString(txtOperator))
            {
                case "+":
                    return Result = Operand1 + Operand2;
                case "-":
                    return Result = Operand1 - Operand2;
                case "*":
                    return Result = Operand1 * Operand2;
                case "/":
                    return Result = Operand1 / Operand2;
                default:
                    return Result;
            }
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

【问题讨论】:

  • 切换后返回或者这样做:Result = Operand1 - Operand2; return Result;对所有情况都这样做。
  • switch (Operator = Convert.ToString(txtOperator)) 没有多大意义。将字符串转换为字符串是没有意义的
  • 还可以尝试使用动词作为方法名称,这样Calculate 将更具可读性并且符合约定。
  • @camiloterevinto 这不是该线程的副本。完全不同的问题。
  • 也可以switch(operator)

标签: c# winforms


【解决方案1】:

当您将操作符移出文本框时,您正试图将文本框转换为字符串而不是文本。

string Operator = Convert.ToString(txtOperator);

应该是

string Operator = txtOperator.Text;

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2023-03-17
    • 2017-02-28
    相关资源
    最近更新 更多