名为MinBalance的静态成员未按要求运行

时间:2012-12-01 15:41:04

标签: c#

这是我的班级:

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时,那么它应该抛出一个异常,说明余额不足,但它在第一次运行时没有工作,而是在我尝试撤销时工作第二次。

3 个答案:

答案 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)
{