2016-08-26 125 views
-6

大概只是一個小錯誤,但我似乎無法找到任何地方。當我運行程序時,它打印「沉積$ 100之後:儲蓄帳號:也是我退出類似乎並不奏效,因爲天平取錢不改變後沒有得到正確的輸出

public class CheckingandSavings 
{ 

    public static void main(String[] args) { 
     Savings savings = new Savings(1001,1000.0); 
     Checking checking = new Checking(1002, 2000.0); 

     System.out.println("At the beginning: " + savings); 
     savings.deposit(100); 
     System.out.println("After depositing $100: " + savings); 
     savings.withdraw(500); 
     System.out.println("After withdrawing $500: " + savings); 

     System.out.println(""); 

     System.out.println("At the beginning: " + checking); 
     checking.deposit(100); 
     System.out.println("After depositing $100: " + checking); 
     checking.withdraw(500); 
     System.out.println("After withdrawing $500: " + checking); 
    } 
} 

public class Account { 

    private int accountNumber; 
    private double accountBalance; 

    //The Two-Arg Constructor 
    public Account(int accountNumber, double accountBalance) 
    { 
     setAccountBalance(accountBalance); 
     setAccountNumber(accountNumber); 
    } 

    //Getter for accountNumber 
    public int getAccountNumber() 
    { 
     return accountNumber; 
    } 

    //Setter for accountNumber 
    public void setAccountNumber(int accountNumber) 
    { 
     if (accountNumber >= 0) 
      this.accountNumber = accountNumber; 
    } 

    //Getter for accountBalance 
    public double getAccountBalance() 
    { 
     return accountBalance; 
    } 

    //Setter for accountBalance 
    public void setAccountBalance(double accountBalance) 
    { 
     if (accountNumber >= 0) 
      this.accountBalance = accountBalance; 
    } 

    //Deposit to accountBalance 
    public void deposit(double amount) 
    { 
     if (amount > 0) 
      this.accountBalance += amount; 
    } 

    //Withdraw from accountBalance 
    public double withdraw(double amount) 
    { 
     if (amount > 0 || amount > this.accountBalance) 
      return 0; 

     this.accountBalance -= amount; 
     return this.; 
    } 

    //Returns a string of the instance data 
    public String toString() 
    { 
     String result = ""; 
     result += "Account Number: " + this.accountNumber; 
     result += "\nAccount Balance: $" + String.format("%.2f", this.accountBalance); 
     return result; 
    } 
} 

public class Savings extends Account { 

    //The two-arg constructor 
    public Savings(int accountNumber, double accountBalance) 
    { 
     super(accountNumber, accountBalance); 
    } 

    //Returns a string of the instance data 
    public String toString() 
    { 
     String result = ""; 
     result += "Savings Account: \n" + super.toString(); 
     return result; 
    } 
} 

public class Checking extends Account { 


    //The two-arg constructor 
    public Checking(int accountNumber, double accountBalance) 
    { 
     super(accountNumber,accountBalance); 
    } 

    //Returns a string of the instance data 
    public String toString() { 
     String result = ""; 
     result += "Checking Account: \n" + super.toString(); 
     return result; 
    } 
} 
+1

嘗試只發布相關代碼,並將其格式化得更好一些;-) –

+0

或者只是調試它並自行修復它... – Meo

回答

2

考慮看看你退出方法:

//Withdraw from accountBalance 
public double withdraw(double amount) 
{ 
    if (amount > 0 || amount > this.accountBalance) //This needs to be && 
     return 0; 

    this.accountBalance -= amount; 
    return this.; //I am assuming you meant this to be this.accountBalance? 
} 

你是說,如果你想提取的金額大於0或它比您的帳戶餘額更大,返回0。我想你想說等等,而不是把amount > 0 && amount > this.accountBalance

另外,你應該返回this.accountBalance

最後,您應該將@Override註釋放在toString方法的上方。這讓編譯器知道你重寫了一個父母方法。