-2

我想知道是否可以将对象存储到用户想要的数组列表中。对于我的程序,它通过“帐号”将用户数据存储到他们选择的单元格中,但是每次我输入新帐号时,它都会说数组基本上不够大。这是我的代码。如果有人可以提供帮助,将不胜感激。

ArrayList <Account> account = new ArrayList<Account>();
int accountNumber;
String nCity;
String nState;
String nZipCode;
String nLastName;
String nAddress;
String firstName;
String nAccount;

public void newAccount()
{
    Account a = new Account();
    a.firstName = JOptionPane.showInputDialog("What's your first name?");
    a.nLastName = JOptionPane.showInputDialog("What's your last name?");
    a.nAddress = JOptionPane.showInputDialog("What's your current address?");
    a.nCity= JOptionPane.showInputDialog("What's your current city?");
    a.nState = JOptionPane.showInputDialog("What's your current State?");
    a.nZipCode = JOptionPane.showInputDialog("What's your current Zip Code?");
    String num = JOptionPane.showInputDialog("What do you want your account number to be?");
    accountNumber = Integer.parseInt(num);
    account.add(accountNumber, a);
4

3 回答 3

2

使用 aHashMap并使用帐号作为密钥

    Map<Integer,Account> account =new Hashmap<Integer,Account>();
    account.put(accountNumber,a);
于 2012-12-27T20:36:58.990 回答
1

您已经创建了一个ArrayList<Account>,并且您正在以对的形式向其中添加元素key-value

如果你想以这种方式添加,你可能需要一个HashMap: -

Map<Integer, Account> accounts = new HashMap<Integer, Account>();

然后,要在其中添加条目,您可以使用Map#put()方法:-

accounts.put(accountNumber, a);
于 2012-12-27T20:37:31.233 回答
1

同意以上关于使用 Map 的建议。

您的“数组不够大”仅仅是因为您在尚未初始化索引时试图指定 List 的索引。

简单地说,您正在使用这种 List 方法:

add(int index, E element) 在此列表中的指定位置插入指定元素。

关键字是插入。因此,想象一下,如果您的“accountNumber”是 100,并且您之前没有 99 个元素,那么尝试插入在逻辑上将毫无意义,因为您将无处插入。

JavaSE6 API 在这个方法下说:

IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())

顺便说一句,除了使用 Map 之外,另一个解决方案(如果可用)是将 accountNumber 作为 Account 的另一个字段,您现在可以使用 List 与单参数 add() 方法。

于 2012-12-27T20:56:05.100 回答