2012-02-02 22 views
0

2次元動的配列に値を追加するにはどうすればよいですか?Java 2次元動的配列に値を追加

String emp[][] = { 
{"001","Superman","Manda","123-1233","02-14-1970","Male","Manager","20,000","Regular"}, 
{"002","Batman","Manda","33-1233","07-14-2007","Male","Clerk","20,000","Regular"}, 
}; 

私はこのコード

int arrLen = emp.lenght; 
emp[arrLen][0] = "003" 
emp[arrLen][1] = "Superwoman" 
emp[arrLen][2] = "QC" 
emp[arrLen][3] = "123-1233" 
emp[arrLen][4] = "03-12-2012" 
emp[arrLen][5] = "Female" 
emp[arrLen][6] = "Supervisor" 
emp[arrLen][7] = "10,000" 
emp[arrLen][8] = "Regular" 

を試みるが、それは

誰も私を助けることができる仕事doesntの?

おかげ

答えて

0

Java配列の長さは固定です。サイズ変更可能な配列を使用する場合は、ArrayListを使用してください。

例:

ArrayList<String[]> list = new ArrayList<String[]>(); 
list.add(new String[]{"Superman","Manda","..."}); 
list.add(new String[]{"Superwoman","Manda","..."}); 
+0

2D ArrayListはありますか? – user1033600

+0

ArrayList >は使用できません。ネストされた型を必要とせずにネストすることができます。 –

+0

いいえ、列の数が固定されている場合は、配列のArrayListを使用できます: 'ArrayList '。 –

4

あなたはは、アレイにを追加することはできません - 作成後、サイズが固定されています。 ArrayListなどのList<E>実装を使用することを検討する必要があります。理想的には、文字列の配列だけでなく、この情報をよりよくカプセル化する型を作成したことがあります。あなたが日付、名前、数値などを持っているようです - なぜその情報を使用しますか?例えば

List<Person> people = new ArrayList<Person>(); 
people.add(new Person(1, "Superman", "Manda", new TelephoneNumber("123-1233"), 
      new LocalDate(1970, 14, 2), Gender.MALE, 
      "Manager", 20000, SalaryType.REGULAR); 
0

あなたがタイプミス

lenght 

また持って、文が最後に

; 

で終了する必要があり、あなたの実際の問題は何ですか:の長さ作成時に配列が固定されます。 array [array.length]は常に配列の外側を指します。

0

Array.lengthとは、あなたのインデックスより1高い数値を返します。

0

配列オブジェクトは固定サイズです。あなたのメインアレイの最後に空のスポットがあります、この後

String[][] tmp = new String[emp.length + 1][]; 
for (int i=0; i<emp.length; ++i) 
    tmp[i] = emp[i]; 
emp = tmp; 

、すなわち - あなたは、新しい、より大きなString[][]オブジェクトを割り当て、それにかけサブアレイを移動することができます。それを記入してください

emp[emp.length-1] = new String[] {"003", ...}; 
0

あなたの現在のコードには2つの大きな問題があります。

1)配列は動的ではなく、固定サイズです。代わりに、値を追加できるArrayListsデータ構造を使用する必要があります。

2)array.Lengthは長さnを返しますが、配列のインデックスは0から(n-1)です。したがって、長さを参照すると、範囲外のインデックスの例外が発生します。