0
    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());

我遇到的问题是我试图从 accountowner 访问帐号而不涉及对 bankmanager 类的引用。我怎样才能让它工作。我一直在尝试使用帐户类本身,因为我创建了一个构造函数并将这些参数分配给帐户类中的字段,但似乎不起作用

4

3 回答 3

1

此代码包含一个错误:

public Account(int accountNumber, AccountOwner owner){
    AccountOwner cstomer = owner;
    int acctNumber = accountNumber;
    accountNumber = acctNumber;
    //System.out.println(accountNumber);
}

accountNumber您传递给构造函数的参数优先于您的类的accountNumber字段。你AccountaccountNumber领域从未真正设置过。

这相当于:

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;
}

我建议您学习使用调试器或更好地编写单元测试(首先)。

于 2013-03-15T14:43:04.927 回答
0
class AccountOwner {
//...
    private Account account;
//...
    public Integer getAccountNumber() {
        return this.account != null ? this.account.accountNumberIs() : null;
    }
}
于 2013-03-15T14:41:27.407 回答
0

您已将 accountNumber 类型设置为int并将其设置为 0000000 (对于 int 类型仅等于 0),因此当您调用 getAccountNumber() 方法时会得到 0。

相反,将 accountNumber 类型更改为String并将其初始化为 '0000000'。然后您将看到 0000000 正在打印。

于 2013-03-15T14:44:16.433 回答