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)
每次调用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)