-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 回答