帐户类无法正常工作

时间:2014-02-13 05:46:19

标签: java class

public class AccountDriver {
    public static void main(String[] args) {

        // ID, Balance, Annual Interest Rate
        Account number1 = new Account();
        Account number2 = new Account(1122, 20000.00, 0.045);

        // Default account
        System.out.println("The Account ID is:  " + number1.getId());
        System.out.println("The Account Balance is: " + number1.getBalance());
        // System.out.println("The Account Balance is: "+
        // number1.getMontlyInterest());
        System.out.println("");

        // Ask to withdraw 2500
        System.out.println("The Account ID is:  " + number2.getId());
        number2.withdraw(2500.00);
        number2.deposit(3000.00);
        System.out.println("Account Balance is " + number2.getBalance());
        // System.out.println("The montly interest is : "+
        // number2.getMontlyInterest());
        System.out.println("");

    }
}

public class Account {

    private int id = 0;
    private double balance = 0;
    private double annualInterestRate = 0;

    public Account(int id, double balance, double annualInterestRate) {
        this.setId(id);
        this.setBalance(this.balance);
        this.setBalance(annualInterestRate);
    }

    public Account() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public double getAnnualInterestRate() {
        return annualInterestRate;
    }

    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }

    public double getMontlyInterest(double montlyInterest) {
        // Given Formula
        // double MontlyInterest= this.balance * get.MontlyInterestRate();
        return montlyInterest;
    }

    public double getMontlyInterestRate(double montlyInterestRate) {
        // Given Formula
        montlyInterestRate = this.annualInterestRate / 12;
        return montlyInterestRate;

    }

    double withdraw(double amount) {
        return balance -= amount;
    }

    double deposit(double amount) {
        return balance += amount;
    }
}

我收到错误

帐户ID为:0 帐户余额为:0.0

帐户ID是:1122 帐户余额为20500.0 线程“main”中的异常java.lang.Error:未解决的编译问题:     类型Account中的方法getMontlyInterestRate(double)不适用于参数()

at Account.getMontlyInterest(Account.java:41)
at AccountDriver.main(AccountDriver.java:21)

1 个答案:

答案 0 :(得分:2)

您在代码中犯了两个小错误。

在构造函数中这两行

this.setBalance(this.balance); // this.balance is the instance variable and not the parameter passed
                ^^^^ - this is not required, just use the balance parameter passed.
this.setBalance(annualInterestRate); // you are re-writing the balance with interest rate
     ^^^^^^^^^^ - You need to set annual interest rate and not the balance here.

应该是

this.setBalance(balance); // sets the balance passed to the instance variable balance
this.setAnnualInterestRate(annualInterestRate); // sets the annual interest rate

现在设置annualInterestRate后,您可以通过修改此类getMontlyInterestRate方法获得每月利率。

public double getMontlyInterestRate() {
    // Given Formula
return this.annualInterestRate / 12;
}

您可以通过取消注释System.out.println代码来打印每月利率。

System.out.println("The montly interest is : "+ number2.getMontlyInterestRate());

每月利息法看起来像这样:

public double getMontlyInterest() { // no parameter required
    // Given Formula
    double MontlyInterest = this.balance * getMontlyInterestRate(); // balance multiplied by monthly interest rate
    return MontlyInterest; // return the value
}

System.out.println("The montly interest is : "+ number2.getMontlyInterest());