这是我的班级:
class EmpDetails
{
private string _EmpName;
private int _EmpID;
private string _EmpDepartment;
private string _EmpPosition;
private decimal _Balance;
private static int _PrevId;
public static decimal MinBalance; //This memeber is not working as required
**public void Withdraw(decimal amount) // The Problem is in this method**
{
if (this.Balance < MinBalance)
{
throw new ApplicationException("Insufficient funds");
}
else
{
this._Balance -= amount;
}
}
}
我已经强调了名为Withdraw
的方法,我认为这会产生问题。假设检查余额是否小于最小余额并抛出异常。让我们说当我将MinBalance设置为500并将Balance设置为1000,然后尝试从1000中提取600时,那么它应该抛出一个异常,说明余额不足,但它在第一次运行时没有工作,而是在我尝试撤销时工作第二次。
答案 0 :(得分:1)
你必须检查不是你当前的余额,但你的余额将如何 之后你的提款,这就是为什么它没有按你的预期工作,你可以这样做:
public void Withdraw(decimal amount) // The Problem is in this method**
{
if ( ( this.Balance - amount ) < MinBalance)
{
throw new ApplicationException("Insufficient funds");
}
else
{
this._Balance -= amount;
}
}
答案 1 :(得分:1)
如果您单步执行代码,则会看到问题所在。在行if (this.Balance < MinBalance)
上设置断点。第一次通过时,余额(1000)高于最小余额(600),因此允许提款。听起来你真的想要检查余额,而不是起始余额。
答案 2 :(得分:1)
如果我理解您对问题的描述是正确的,那么您希望阻止人们将余额减少到低于最低余额。
public void Withdraw(decimal amount) // The Problem is in this method**
{
if (this.Balance < MinBalance)
{
throw new ApplicationException("Insufficient funds");
}
else
{
this._Balance -= amount;
}
}
但是你并没有考虑退出这个等式。将你的病情改为
if (this.Balance - amount < MinBalance)
{