【发布时间】: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)