-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

Map の使用に関する上記の提案に同意します。

「配列が十分に大きくない」というのは、インデックスをまだ初期化していないときにリストのインデックスを指定しようとしているからです。

簡単に言えば、次の List のメソッドを使用しています。

add(int index, E element) 指定された要素をこのリストの指定された位置に挿入します。

キーワードは INSERT です。したがって、「accountNumber」が 100 で、その前に 99 個の要素がない場合、どこにも挿入していないため、挿入しようとしても論理的に意味がありません。

JavaSE6 API は、このメソッドの下で次のように述べています。

IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())

ちなみに、別の解決策として、Map を使用する以外に、accountNumber を Account の別のフィールドとして使用する方法があります。単一引数の add() メソッドで List を使用できます。

于 2012-12-27T20:56:05.100 に答える
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 に答える