-3
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());}}

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

4

1 回答 1

6

在你的

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; 
}

你再次减少了你的余额,因此在你accnt1.setWithdraw(47.62);跟注时双重提款,然后accnt1.withdraw(balance);

accnt1.setWithdraw(47.62);
System.out.println("Withdraw2 "+accnt1.getWithdraw()+"  " + accnt1.withdraw(balance));

更改您setWithdraw(double withdraw)以排除

if(withdraw <= balance){
   balance =  balance - withdraw;
}

IE

public void setWithdraw(double withdraw) {
    this.withdraw = withdraw;
}

而且您的withdraw() 函数中不需要参数wamt。

IE

public boolean withdraw()
{
    boolean result = false;
    if(withdraw <= balance)
    {
    balance= balance - withdraw;
    return true;
    }
    return result; 
}
于 2013-05-19T11:35:14.187 回答