import java.text.DecimalFormat;
import java.util.ArrayList;
public class AccountOwner {
private Account account;
private String firstname;
private String lastname;
private String address;
private double currentBalance;
private ArrayList<Integer> withdrawAmount = new ArrayList<Integer>(5);
private ArrayList<Double> deposits = new ArrayList<Double>();
private ArrayList<Double> purchases = new ArrayList<Double>(5);
private DecimalFormat formatter = new DecimalFormat("##0.00");
public AccountOwner(String firstname, String lastname, String address) {
this.firstname = firstname;
this.lastname = lastname;
this.address = address;
}
public String getFirstName() {
return firstname;
}
public String getLatName() {
return lastname;
}
public String getAddress() {
return address;
}
public String checkBalance() {
for (Double deposit : deposits) {
this.currentBalance += deposit;
}
return formatter.format(currentBalance);
}
public void makeDeposit(double amount) {
deposits.add(amount);
}
public void viewAllDeposits() {
double allDeposits = 0.0;
System.out.println("All deposits till today:");
for (int i = 0; i < deposits.size(); i++) {
allDeposits = deposits.get(i);
System.out.print("\t"+"$"+allDeposits);
}
System.out.println();
}
public void withdrawMoney(int amount) {
withdrawAmount.add(amount);
currentBalance -= amount;
}
public String getActualBalance() {
return formatter.format(currentBalance);
}
public void withdrawAmounts(){
System.out.println("All Withdrawls till today");
for(int i = 0; i < withdrawAmount.size(); i++){
System.out.print("\t"+"$"+withdrawAmount.get(i));
}
System.out.println();
}
public void makePurchase(double itemPrice){
purchases.add(itemPrice);
this.currentBalance -= itemPrice;
}
public void viewAllmadePurchases() {
double purchase = 0.0;
System.out.println("All purchases made till today:");
for (int i = 0; i < purchases.size(); i++) {
purchase = purchases.get(i);
System.out.print("\t"+"$"+purchase);
}
}
public void viewMyPersonalInformation(){
System.out.println("Firstname:" + this.firstname);
System.out.println("LastName:" +this.lastname);
System.out.println("Address:" +this.address);
System.out.println("Balance:" +this.checkBalance());
viewAllDeposits();
withdrawAmounts();
viewAllmadePurchases();
}
public class Account {
private AccountOwner customer;
private int accountNumber;
public Account(){
customer = null;
accountNumber = 0000000;
}
public Account(int accountNumber, AccountOwner owner){
this.accountNumber = accountNumber;
customer = owner;
}
public int accountNumberIs(){
return accountNumber;
}
public class BankManager {
private Account account;
private AccountOwner accountOwner;
private int accountNumber;
public void createNewAccount(int accountNumber, AccountOwner owner){
account = new Account(accountNumber, owner);
this.accountNumber = accountNumber;
this.accountOwner = owner;
}
public int getaccountNumber(){
return accountNumber;
}
public void setAccountNumber(int newaccountnumber){
accountNumber = newaccountnumber;
}
public void customerInformation(){
accountOwner.viewMyPersonalInformation();
}
public class MainProgram {
/**
* @param args
*/
public static void main(String[] args) {
BankManager manager = new BankManager();
AccountOwner owner = new AccountOwner("Tom", "Smith", "208 W 119th St");
manager.createNewAccount(389745, owner);
Account acc = new Account();
owner.makeDeposit(550);
owner.makeDeposit(700);
owner.makeDeposit(122.93);
owner.makeDeposit(195.93);
owner.withdrawMoney(200);
owner.makePurchase(200);
owner.makeDeposit(100);
owner.makePurchase(1220);
owner.withdrawMoney(30);
owner.viewMyPersonalInformation();
System.out.println();
System.out.println();
System.out.println();
System.out.println(acc.accountNumberIs());
我遇到的问题是我试图从帐户所有者访问帐号而又不涉及对bankmanager类的引用..我该如何使用它。我有
一直尝试使用帐户类本身,因为我创建了一个构造函数并分配了这些
对帐户类中的字段进行参数设置,但似乎不起作用
最佳答案
此代码包含一个错误:
public Account(int accountNumber, AccountOwner owner){
AccountOwner cstomer = owner;
int acctNumber = accountNumber;
accountNumber = acctNumber;
//System.out.println(accountNumber);
}
您传递给构造函数的
accountNumber
参数优先于类的accountNumber
字段。您的Account
的accountNumber
字段实际上从未设置。这等效于:
public Account(int accountNumber, AccountOwner owner){
AccountOwner cstomer = owner;
accountNumber = accountNumber;
}
为确保您正在访问该字段,请使用
this
关键字,如下所示:this.accountNumber
public Account(int accountNumber, AccountOwner owner){
AccountOwner cstomer = owner;
this.accountNumber = accountNumber;
//System.out.println(accountNumber);
}
还有另一个错误,未分配
Account.customer
:public Account(int accountNumber, AccountOwner owner){
customer = owner;
this.accountNumber = accountNumber;
}
我建议您学习使用调试器或更好的编写单元测试(第一个)。