我对编程很新,而且我已经坚持了一段时间了,所以任何指导我指向正确方向的帮助都会非常感激!
我正在处理臭名昭着的银行帐户计划,并且无法从其他班级访问特定对象。我有两个班,Customer和Banklogic。 Customer类显然创建了具有社会保险号(pnr)和名称的客户对象。 Banklogic类使用不同的方法处理和操作这些对象,例如将它们添加到银行或更改其名称。
我的问题是,当我创建了三个客户对象时,我唯一可以访问的是最后创建的客户对象。我需要能够访问任何对象才能调用它们的方法。
这是Customer类的构造函数:
public Customer(long pNr, String name)
{
this.pNr = pNr;
this.name = name;
}
这是在BankLogic类中添加新客户到银行的方法(带有一些不同的列表):
public boolean addCustomer(String name, long pNr)
{
if(!pNrList.contains(pNr))
{
customer = new Customer(pNr, name);
customerList.add(customer);
String client = Long.toString(customer.getpNr()) + " " + customer.getName();
kunder.add(client);
pNrList.add(pNr);
return true;
}
else return false;
}
如果我在测试者类或BankLogic类中创建三个对象,如下所示:
public static void main(String[] args)
{
BankLogic a = new BankLogic();
a.addCustomer("JEAN", 66);
a.addCustomer("JEN", 67);
a.addCustomer("ANNA", 70);
}
当我尝试使用Customer类中的getter方法访问其中一个时,唯一返回的对象是最后创建的对象,在这种情况下:
Anna 70
我认为来自Customer类的getter方法存在问题:
public long getpNr()
{
return pNr;
}
我也试过了另一个getter mehod,它也不会起作用:
public long getpNr(long pNr)
{
if(this.pNr == pNr)
{
return pNr;
}
else return -1;
}
BankLogic类中的customerList是一个包含Customer对象的Arraylist,但我无法弄清楚如何从中访问不同的对象(如果可能的话)。
PS 这是我在这里的第一篇文章,所以请原谅任何错误,或者这已经在其他地方得到了解答。 谢谢/约翰
答案 0 :(得分:1)
您只创建类BankLogic
的单个对象,并且只通过调用方法addCustomer
来更新同一对象的属性(name和pnr)。更新代码如下,创建3个不同的对象: / p>
BankLogic a = new BankLogic();
a.addCustomer("JEAN", 66);
BankLogic b = new BankLogic();
b.addCustomer("JEN", 67);
BankLogic c = new BankLogic();
c.addCustomer("ANNA", 70);
编辑: 使用下面的代码然后列表的大小将是3并且将反映正确的名称/ pnr
ArrayList<BankLogic> obj = new ArrayList<BankLogic>();
BankLogic a = new BankLogic();
a.addCustomer("JEAN", 66);
obj.add(a);
a = new BankLogic();
a.addCustomer("JEN", 67);
obj.add(a);
a = new BankLogic();
a.addCustomer("ANNA", 70);
obj.add(a);