-4

これは私のクラスです:

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を引き出しようとすると、バランスが不十分であるという例外がスローされるはずですが、最初は機能せず、引き出しようとすると機能します。 2回目。

4

3 に答える 3

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;
    }
}
于 2012-12-01T15:45:58.403 に答える
1

コードをステップスルーすると、問題が発生します。行にブレークポイントを設定しますif (this.Balance < MinBalance)。初回は、残高(1000)が最小残高(600)よりも高いため、引き出しが許可されます。開始時の残高ではなく、残りの残高を確認したいようです。

于 2012-12-01T15:46:12.207 に答える
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)
{
于 2012-12-01T15:46:30.727 に答える