2013-05-20 32 views
-4

我试图计算一个简单的银行function.I通过两个撤回值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()); 
    } 
} 
+0

Account.withdraw()方法ds返回一个布尔结果。两个方法是相同的,但一个是布尔类型和其他是无效类型。我的问题是结果余额应该是324.88作为总余额,但它给出277.26。它需要第二次提取金额两次,但为什么?????????? – user2349171

+5

调试器:“你好,请用我吧:(”。 – Maroun

+1

你试过调试它吗?学习如何调试比请求别人为你做得更好 – BobTheBuilder

回答

1
public boolean withdraw(double wamt) 
    { 
    boolean result = false; 
    if(withdraw <= wamt) 
    { 
     balance= balance - withdraw; 
     return true; 
    } 
    return result; 
    } 

您降低兼得withdraw()setWithdraw()所以你设置一次,然后在你的系统的println再次降低这就是为什么最后你得到两倍的减少

+0

非常感谢。它解决了我的问题 – user2349171

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

这个方法查找错误,每次你回到你增加另一个变量的时间 - 这意味着你称这种方法越多,平衡越大。这是故意的吗?

另外 - 你应该看看一些基本的单元测试和调试,所以更清楚地看到不同的变量发生了什么。

0

也许问题就在这里

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

应该

System.out.println("Balance " + accnt1.getBalance()); 
相关问题