使用ArrayList存储对象并使用main方法进行测试

时间:2018-09-16 06:49:43

标签: java oop object arraylist

我是Java初学者,正在尝试自学ArrayList。我打算编写一个存储银行类的程序,该程序由一系列银行帐户组成,其中包括:名称,余额和帐号。我还想使用main()方法测试Bank类,以检索帐户或通过帐号删除帐户。

这是我到目前为止所做的:

import java.util.ArrayList;

public class W7E1b {
    public static void main(String[]args) {

        ArrayList <BankAccount> accountList = new ArrayList<BankAccount>();

        accountList.add(new BankAccount("Peter",100.00));
        accountList.add(new BankAccount("Jan",1500.00));

        BankAccount.setName("Phil");
        System.out.println(accountList.get(1).getName());
    }

    public class BankAccount {
        private String Name;
        private double balance;
        private static int accountNum;
        private static int lastAccountNum = 0;

        public BankAccount(String Name, double balance) {
            this.Name = Name;
            this.balance = balance;
            lastAccountNum++;
            accountNum = lastAccountNum;
        }


        public void setName(String nm) {
            Name = nm;
        }
        public void setbalance(double bl) {
            balance =bl;
        }
        public int getaccountNum() {
            return accountNum;
        }

    }
}

当我尝试使用ArrayList中的add方法向对象添加参数时,它显示了main方法中的错误。我现在对ArrayList概念感到困惑。 我不明白我在代码中做错了什么。

如果我想使用ArrayList来存储对象,我还应该声明一个构造函数吗?如果有多个具有相同类型参数的对象,我可以只创建一个构造器还是多个构造器?我应该在哪里声明Arraylist?

如果有人可以帮助我解决有关OOPs概念的其他问题,那就太好了:如果有多个具有相同类型参数的对象,那么我只能创建一个还是多个构造函数?

2 个答案:

答案 0 :(得分:0)

首先,BankAccount.setName("Phil");中存在编译错误。 SetName()是一个实例方法,需要一个对象才能访问,并且不能由className访问。

此外,可以根据您的情况使用构造函数。否则,您可能必须声明其他方法来设置所有实例变量,这是构造函数正在执行的操作,并且对于每个实例变量最好或使用不同的方法(不是必需的)。

对于具有相同类型参数的多个对象,您仅需要一个构造函数。

此外,您已经声明了ArrayList,之后再添加看起来正确的BankAccount类型的对象。

答案 1 :(得分:0)

您对ArrayList的实现是正确的。

ArrayList <BankAccount> accountList = new ArrayList<BankAccount>();

在这里,您声明您的accountList将包含“银行帐户”类型的对象。

accountList.add(new BankAccount("Peter",100.00));
accountList.add(new BankAccount("Jan",1500.00));

这里的代码正在做两件事,使用您提供的构造函数创建BankAccount类型的对象,并将这些新创建的对象添加到accountList中。

您的代码似乎在以下两行中存在编译问题:-

BankAccount.setName("Phil");
System.out.println(accountList.get(1).getName());

在第一行上,您试图在类上调用setName()方法(好像它是一个静态方法),而在BankAccount类中,它被指定为实例方法。 (没有静态关键字)

在第二行上,您正在使用accountList.get(1)检索BookAccount类的对象,然后在其上调用getName()方法。但是,您的BookAccount类中没有getName()。

根据我看到的代码,您对ArrayList的理解似乎不错。