我是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概念的其他问题,那就太好了:如果有多个具有相同类型参数的对象,那么我只能创建一个还是多个构造函数?
答案 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的理解似乎不错。