为什么我的值没有被更新和正确传递?

0 java

因此,我正在初始化这些实例并使用类中的方法来修改值。当我在修改它们的方法中打印值时,它们会正确打印,但是当它们被传递给“toString”方法时,它们会打印初始值而不是修改后的值。

package com.meritamerica.assignment1;

public class AccountHolder {

/** Bank Account Information */
    public String firstName, middleName, lastName, ssn;
    public double checkingAccountOpeningBalance, savingsAccountOpeningBalance;

/** Default Constructor */  
    AccountHolder(){
    }

/** Custom Constructor */   
    AccountHolder
            (String firstName, 
            String middleName, 
            String lastName,
            String ssn, 
            double checkingAccountOpeningBalance, 
            double savingsAccountOpeningBalance)
            {
        this.firstName = firstName;
        this.middleName = middleName;
        this.lastName = lastName;
        this.ssn = ssn;
        this.checkingAccountOpeningBalance = checkingAccountOpeningBalance;
        this.savingsAccountOpeningBalance = savingsAccountOpeningBalance;
    }

/** Getters and Setters */  
    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getMiddleName() {
        return this.middleName;
}

public void setMiddleName(String middleName) {
    this.middleName = middleName;
}

public String getLastName() {
    return this.lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getSSN() {
    return this.ssn;
}

public void setSSN(String SSN) {
    this.ssn = ssn;
}

public CheckingAccount getCheckingAccount() {
    CheckingAccount temp = new CheckingAccount(checkingAccountOpeningBalance);
    return temp;
}

public SavingsAccount getSavingsAccount() {
    SavingsAccount temp = new SavingsAccount(savingsAccountOpeningBalance);
    return temp;
}

/** Converts type to String */  
@Override
public String toString() {
    return "Name: " + this.firstName + " " +  this.middleName + " " +  this.lastName + "\r\n" + 
            "SSN: " + ssn + "\r\n" +  
            "Checking Account Balance: " + this.checkingAccountOpeningBalance + "\r\n" +
            "Savings Account Balance " + this.savingsAccountOpeningBalance  + "\r\n";
}

    
}



package com.meritamerica.assignment1;

public class CheckingAccount {
public double openingBalance, interestRate, futureBalance;

CheckingAccount(
        double openingBalance)
        {
    this.openingBalance = openingBalance;
    this.interestRate = 0.0001;
}


public double getBalance() {
    return this.openingBalance;
}

public double getInterestRate() {
    return this.interestRate;
}

public boolean withdraw(double amount) {
    if(amount < openingBalance && amount > 0) {
        openingBalance -= amount;
        return true;
    }else {
        System.out.println("Not enough money!!!");
        return false;
    }
}

public boolean deposit(double amount) {
    if(amount > 0) {
        openingBalance += amount;
        return true;
    }else {
        System.out.println("Cannot deposit a negative amount");
        return false;
    }
}

public double futureValue(int years) {
    futureBalance = (openingBalance * Math.pow(1.0 + interestRate, years));
    return futureBalance;
}

@Override
public String toString() {
    return "Checking Account Balance: " + getBalance() + "\r\n" +
            "Checking Account Interest Rate: " + getInterestRate() + "\r\n" +
            "Checking Account Balance in 3 years " + futureValue(3);
}
}



package com.meritamerica.assignment1;

public class SavingsAccount {
public double openingBalance, interestRate, futureBalance;

SavingsAccount(
        double openingBalance)
        {
            this.openingBalance = openingBalance;
            this.interestRate = 0.01;
        }
public double getBalance() {
    return this.openingBalance;
}

public double getInterestRate() {
    return this.interestRate;
}

public boolean withdraw(double amount) {
    if(amount < openingBalance && amount > 0) {
        openingBalance -= amount;
        return true;
    }else {
        System.out.println("Not enough money!!!");
        return false;
    }
}

public boolean deposit(double amount) {
    if(amount > 0) {
        openingBalance += amount;
        return true;
    }else {
        System.out.println("Cannot deposit a negative amount");
        return false;
    }
}

public double futureValue(int years) {
    futureBalance = (openingBalance * Math.pow(1.0 + interestRate, years));
    return futureBalance;
}

@Override
public String toString() {
    return "Checking Account Balance: " + this.openingBalance + "\r\n" +
            "Checking Account Interest Rate: " + this.interestRate + "\r\n" +
            "Checking Account Balance in 3 years " + this.futureBalance;
}
}



package com.meritamerica.assignment1;

public class MeritAmericaBankApp {
public static void main(String[] args) {
    AccountHolder john = new AccountHolder
            ("John",
             "James", 
             "Doe", 
             "123-45-6789", 
              100.0, 
              1000.0);
    
    System.out.println(john);
    john.getCheckingAccount().deposit(500.0);
    john.getCheckingAccount().withdraw(800.0);
    john.getCheckingAccount().futureValue(3);
    System.out.println(john.getCheckingAccount());
    System.out.println(john.getSavingsAccount());
Run Code Online (Sandbox Code Playgroud)

use*_*er7 5

每次调用and时都会创建一个新的CheckingAccountandSavingsAccount对象。getCheckingAccountgetSavingsAccount

在构造函数中创建一个CheckingAccountandSavingsAccount对象AccountHolder并使用它。

CheckingAccount checkingAccount;
SavingsAccount savingsAccount;

AccountHolder (String firstName, String middleName, String lastName, String ssn, 
        double checkingAccountOpeningBalance, 
        double savingsAccountOpeningBalance) {
    this.firstName = firstName;
    this.middleName = middleName;
    this.lastName = lastName;
    this.ssn = ssn;
    this.checkingAccount = new CheckingAccount(checkingAccountOpeningBalance);
    this.savingsAccount = new CheckingAccount(savingsAccountOpeningBalance);
}


public CheckingAccount getCheckingAccount() {
    return checkingAccount;
}

public SavingsAccount getSavingsAccount() {
    return savingsAccount;
}
Run Code Online (Sandbox Code Playgroud)