0

The program is supposed to calculate interest for 2 accounts after 12 and 24 months. This works fine. My issue is the getter/setter for interest rate do not work, so when the interest rate is saved as 0.1 in another class private variable I can't print it from main class.

public class testAccountIntrest{
    //main method
    public static void main(String[] args) {
        //creating objects
        Account account1 = new Account(500);
        Account account2 = new Account(100);


        //printing data
        System.out.println("");
        System.out.println("The intrest paid on account 1 after 12 months is " + account1.computeIntrest(12));
        System.out.println("");
        System.out.println("The intrest paid on account 1 after 24 months is " + account1.computeIntrest(24));
        System.out.println("");
        System.out.println("");
        System.out.println("The intrest paid on account 2 after 12 months is " + account2.computeIntrest(12));
        System.out.println("");
        System.out.println("The intrest paid on account 2 after 24 months is " + account2.computeIntrest(24));
        System.out.println("");
        System.out.println("The intrest rate is " + getIntrest());


        }//end main method
    }//end main class

class Account {
    //instance variables
    private double balance;
    private double intrestRate = 0.1;

    //constructor
    public Account(double initialBalance) {
        balance = initialBalance;
    }

    //instance methods
    public void withdraw(double amount) {
        balance -= amount;
    }
    public void deposit(double amount) {
        balance += amount;
    }
    public double getBalance() {
        return balance;
    }
    public void setIntrest(double rate) {
        intrestRate = rate;
    }

    public double getIntrest() {
        return intrestRate;
    }

    public int computeIntrest(int n) {
        double intrest = balance*Math.pow((1+intrestRate),(n/12));
        return (int)intrest;
    }
}

3 Answers 3

5

As the compiler is undoubtedly telling you, your testAccountIntrest class doesn't have a method called getInterest(). So this alone can't do anything in the context of that class:

getInterest()

However, your Account class does have that method. And you have two Account objects in that scope:

Account account1 = new Account(500);
Account account2 = new Account(100);

So you can call that method on those objects:

account1.getInterest()

or:

account2.getInterest()

Basically, you have to tell the code which object you're calling the method on. It can't figure it out on its own.

Sign up to request clarification or add additional context in comments.

Comments

2

getIntrest() is a member method, therefore you need to call

System.out.println("The intrest rate for account 1 is " + account1.getIntrest());
System.out.println("The intrest rate for account 2 is " + account2.getIntrest());

Comments

1

To call a method from another class you need an object of another class.

So, you need an instance of account to call getIntrest. For example:

System.out.println("The intrest rate for account 1 is " + account1.getIntrest());

If an interest rate is the same for all accounts you can make it static:

private static double intrestRate = 0.1;

public static double getIntrest() {
    return intrestRate;
}

Static fields belong to the class and you don't need a specific instance to access it:

System.out.println("The intrest rate for all accounts is " + Account.getIntrest());

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.