2014-11-24 4 views
-1

У меня возникли проблемы с получением баланса после внесения депозита и снятия средств для останова, вместо этого он возвращается к исходному балансу и выполняет операцию.Программирование на Java с использованием объектов/методов

Я прошу его снять 2500, который должен оставить меня с 17500, но у меня это сделать депозит на 3000, который должен дать мне 20500, но вместо этого я получаю 23000.

Кроме того, я получаю «null» для моего вывода даты?

Это первый файл класса.

import java.util.Date; 

public class Account 
{ 
    private int id; 
    private double balance; 
    private double annualInterestRate; 
    private Date dateCreated; 
    private double withdraw; 
    private double deposit; 

    Account() 
    { 
     id = 1; 
     balance = 1; 
     annualInterestRate = 1; 
    } 

    Account(int newID, double newBalance, double newAnnualInterestRate) 
    { 
     id = newID; 
     balance = newBalance; 
     annualInterestRate = newAnnualInterestRate; 
    } 

    public int getId() 
    { 
     return id; 
    } 

    public double getBalance() 
    { 
     return balance; 
    } 

    public double getAnnualInterestRate() 
    { 
     return annualInterestRate; 
    } 

    public double getMonthlyInterestRate() 
    { 
     return (annualInterestRate/12)/100; 
    } 

    public double getMonthlyInterest() 
    { 
     return balance * getMonthlyInterestRate(); 
    } 

    public double getWithdraw(double amount) 
    { 
     amount = balance - amount; 
     return amount; 
    } 

    public double getDeposit(double amount) 
    { 
     amount = balance + amount; 
     return amount; 
    } 

    public Date getDateCreated() 
    { 
     return dateCreated; 
    } 
} 

Это тестовый файл класса

public class TestAccount 
{ 
    public static void main(String[] args) 
    { 
     Account A = new Account(1122, 20000, 4.5); 

     System.out.println("Account number: " + A.getId()); 
     System.out.println("The Account balance is: $" + A.getBalance() + "0"); 
     System.out.println("The Annual Interest Rate is: " + A.getAnnualInterestRate()+ "%"); 
     System.out.println("The Account balance after a $2,500 withrawal is: " + A.getWithdraw(2500)); 
     System.out.println("The Account balance after a $3,000 deposit is: " + A.getDeposit(3000)); 
     System.out.println("The monthly interest earned is: " + A.getMonthlyInterest()); 
     System.out.println("The account was created on: " + A.getDateCreated()); 
    } 
} 
+1

Это, вероятно, самый расплывчатый заголовок миров когда-либо ... – JClassic

ответ

3

Вы изменяете локальную переменную amount, вместо изменения balance. В getWithdraw, изменить

amount = balance - amount; 

в

balance = balance - amount; 

и также для метода getDeposit.

Кстати, непонятно, почему вы называете эти методы getWithdraw и getDeposit, так как эти методы делают снятие средств и депозиты соответственно. Я бы назвал их withdraw и deposit. Я также не вижу смысла возвращать значение параметра amount в обоих методах. Оба метода не должны возвращать что-либо и могут быть указаны для возврата void.

Кроме того, ничто не привязано к dateCreated, так что это null. Вы можете добавить метод setter для этой переменной экземпляра.

+1

Хороший ответ. Я также предлагаю переименовать методы getDeposit() и getWithdraw(). Это полезное соглашение, что методы, чье имя начинается с get, не имеют побочных эффектов. – Jim

+0

@ Jim Да. Уже думал об этом! – rgettman

+0

Ничего себе, я не могу поверить, что не видел этого, спасибо! Такое простое исправление, как насчет даты распечатать? Я продолжаю получать нуль? –

1

В ваших методах getWithdraw и getDeposit вы вероятно должны изменить balance, а не amount. Также нет причин возвращать amount из этих методов.

Вы никогда не создаете объект Date в любом месте, где я могу видеть, поэтому ваша дата null. Основываясь на имени метода getDateCreated, я предполагаю, что дата должна быть установлена ​​на дату создания учетной записи, поэтому вы должны сделать это в своем конструкторе Account.

+0

Спасибо, я забыл о наличии этого объекта! –

Смежные вопросы