-4

我正在尝试计算一个简单的银行函数。我通过一个方法将两个取款值 150 和 47.62 从执行类传递到另一个。但是它需要 47.62 两次,这里给我错误的结果是执行类。

public class Account {
  public double balance ;
  public double deposite;
  public double withdraw;
  public Account(double balance) {
    this.balance = balance;
  }
  public double getBalance() {
    return balance;
  }
  public void setBalance(double balance) {
    this.balance = balance;
  }
  public double getDeposite() {
    balance = balance + deposite;
    return deposite;
  }
  public void setDeposite(double deposite) {
    this.deposite = deposite;

  }
  public double getWithdraw() {
    return withdraw;
  }
  public void setWithdraw(double withdraw) {
    this.withdraw = withdraw;
    if(withdraw <= balance){
      balance =  balance - withdraw;
    }
  }
  public boolean withdraw(double wamt)
  {
    boolean result = false;
    if(withdraw <= wamt)
    {
      balance= balance - withdraw;
      return true;
    }
    return result; 
  }
}

我的客户类别

public class Customer {
  private String firstName;
  private String lastName;
  Account account;
  public Customer(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    //this.account = account;
  }
  public String getFirstName() {
    return firstName;
  }
  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }
  public String getLastName() {
    return lastName;
  }
  public void setLastName(String lastName) {
    this.lastName = lastName;
  }
  public Account getAccount() {
    return account;
  }
  public void setAccount(Account account) {
    this.account = account; }   
}

主类:

public class BankProjectDemo {
  public static void main(String[] args) {
    double balance = 500;
    Customer cust = new Customer("asasd0","asdasda");
    Account accnt = new Account(balance);
    System.out.println("Creating customer:  " +cust.getFirstName());
    accnt.setWithdraw(150);
    accnt.setDeposite(22.50);
    System.out.println("Withdraw1  "+accnt.getWithdraw());
    System.out.println("Depsoite  "+accnt.getDeposite());
    Account accnt1 = new Account(balance);
    accnt1.setWithdraw(47.62);
    System.out.println("Withdraw2 "+accnt1.getWithdraw()+"  " + accnt1.withdraw(balance));
    System.out.println("Balance " + accnt.getBalance());
  }
}
4

3 回答 3

1
public double getDeposite() {
    balance = balance + deposite;
    return deposite;
  }

这个方法看起来不对,每次你返回一个变量时,你都会增加另一个变量——这意味着你调用这个方法的次数越多,余额就越大。这是故意的吗?

此外 - 您应该查看一些基本的单元测试以及调试,以便更清楚地了解不同变量的确切情况。

于 2013-05-20T08:18:10.200 回答
1
 public boolean withdraw(double wamt)
  {
    boolean result = false;
    if(withdraw <= wamt)
    {
      balance= balance - withdraw;
      return true;
    }
    return result; 
  }

你减少了你的余额withdraw()setWithdraw()所以你设置了一次,然后在你的系统上再次减少 println 这就是为什么最后你会得到两倍的减少

于 2013-05-20T08:22:40.123 回答
0

也许问题就在这里

System.out.println("Balance " + accnt.getBalance());

它应该是

System.out.println("Balance " + accnt1.getBalance());
于 2013-05-20T08:21:07.307 回答