-4

以下のコードを実行した結果は次のとおりです。

Final account balance is: -97.0

しかし、答えは 150.0 のはずですよね? どこで間違ったのですか?

class Account
{
  double initBalance;

  Account(double initBalance)
  {
    initBalance=this.initBalance;
  }

  double getBalance()
  {
    return initBalance;
  }

  void deposit(double amt)
  {
    initBalance=initBalance + amt;
  }

  void withdraw(double amt)
  {
    initBalance=initBalance - amt;
  }

}


class TestAccount
{
  public static void main(String args[])
  {
    Account acct=new Account(100);
    acct.deposit(50);
    System.out.println("Final account balance is: " +acct.getBalance());
  }
}
4

5 に答える 5

8
Account(double initBalance) {
   initBalance=this.initBalance;
}

でなければなりません

Account(double initBalance) {
   this.initBalance=initBalance;
}
于 2012-12-20T09:44:44.627 に答える
3

これは正しくないです:

Account(double initBalance)
{
initBalance=this.initBalance;
}

それは次のようになります。

this.initBalance = initBalance;
于 2012-12-20T09:46:35.467 に答える
2

問題はコンストラクタにあります。これを試してください

Account(double initBalance)
{
    this.initBalance = initBalance;
}

これがまさに、メソッド パラメーターがインスタンス変数とは異なる名前を持つべきであり、そのような間違いを避けるために final の使用が好まれる理由です。コンストラクターのパラメーターが最終的なものである場合、コンパイラー自体が警告を発します。いい練習

Account(final double pInitBalance)
{
    initBalance = pInitBalance;
}
于 2012-12-20T09:47:36.610 に答える
1

コンストラクターのコードを変更します。この変種は正しいです:

Account(double initBalance) {
        this.initBalance = initBalance;
}
于 2012-12-20T09:53:34.023 に答える
0
class Account
{
    public double initBalance;

    public Account(double initBalance)
    {
        this.initBalance =     initBalance;
    }

    double getBalance()
    {
        return initBalance;
    }

    void deposit(double amt)
    {
        initBalance=initBalance + amt;
    }

    void withdraw(double amt)
    {
        initBalance=initBalance - amt;
    }
}


public class TestAccount
{
    public static void main(String args[])
    {
        Account acct=new Account(100);
        //System.out.println("account balance after deposit 100 is: " +acct.getBalance());
        acct.deposit(50);
        //System.out.println("account balance after deposit 100 + 50 is: " +acct.getBalance());
        System.out.println("Final account balance is: " +acct.getBalance());
    }
}

これは正しいコードです。チェックしてください。

于 2012-12-20T09:55:31.070 に答える