добавить значение в 2-мерные динамические массивы Java - PullRequest
0 голосов
/ 02 февраля 2012

как я могу добавить значение к двумерным динамическим массивам?

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"

но это не работает

Кто-нибудь может мне помочь?

спасибо

Ответы [ 6 ]

4 голосов
/ 02 февраля 2012

Вы не можете добавить в массив - после создания размер будет фиксированным. Вам следует рассмотреть возможность использования реализации List<E>, такой как ArrayList ..., в идеале создав тип для инкапсуляции этой информации лучше, чем просто массив строк. Похоже, у вас есть даты, имена, числовые значения и т. Д. - почему бы не использовать эту информацию?

Например:

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 голосов
/ 02 февраля 2012

У вас есть две большие проблемы с вашим текущим кодом.

1) Массивы не являются динамическими и имеют фиксированный размер. Вместо этого вы должны использовать структуру данных ArrayLists, где вы можете добавлять значения.

2) Ваш массив. Длина возвращает некоторую длину n, но ваш массив проиндексирован от 0 до (n-1). Следовательно, ссылаясь на длину, вы получите исключение индекса вне границ.

0 голосов
/ 02 февраля 2012

Объекты массива имеют фиксированный размер.Вы можете выделить новый, больший String[][] объект и переместить к нему подмассивы - т.е.

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

После этого в конце вашего основного массива появится пустое место.Заполните его

emp[emp.length-1] = new String[] {"003", ...};
0 голосов
/ 02 февраля 2012

array.length возвращает число, которое на 1 больше, чем ваш индекс.

0 голосов
/ 02 февраля 2012

Java-массивы имеют фиксированную длину. Если вы хотите изменить размер массива, используйте ArrayList .

Пример:

ArrayList<String[]> list = new ArrayList<String[]>();
list.add(new String[]{"Superman","Manda","..."});
list.add(new String[]{"Superwoman","Manda","..."});
0 голосов
/ 02 февраля 2012

У вас есть опечатка

lenght

Кроме того, операторы должны заканчиваться на

;

Наконец, в чем ваша проблема: длина массива фиксируется при создании;массив [array.length] всегда будет указывать вне массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...