Эта функция должна добавить элемент по выбранному индексу и нажать все остальные элементы массива вниз. Так, например, у меня есть следующий массив:Вставка элементов по определенному индексу в массиве - исключение IndexOutOfBounds
[0] = zero
[1] = one
[2] = two
, если добавить еще один элемент с индексом 0 называется NEWZERO, массив должен выглядеть следующим образом:
[0] = NEWZERO
[1] = zero
[2] = one
[3] = two
, но в настоящее время я получая исключение IndexOutOfBounds, и он не работает, хотя мой массив намного больше, чем всего 3 элемента.
P.S. Я не хочу использовать встроенную библиотеку ArrayList, которая автоматически сделает это за вас.
public void insert(int i, String s) {
if (array[i] == null) {
array[i] = s; //Need to add feature that instantly puts the element at the first available spot on the list.
} else {
for (int j = i; j < array.length; j++) { //Can't use >= i
array[j + 1] = array[j]; //THIS IS WHERE I GET THE ERROR.
if (j == array.length - 1) {
break;
}
}
array[i] = s;
extendArray(); //If an element is inserted properly, the array becomes array.length + 1
Я не получаю ошибку, потому что в моем массиве нет места. Даже если у меня есть массив с 20 элементами, и я работаю всего с 3, я все равно получаю ошибку OutOfBounds. Вот мой метод расширения массива, когда пользователь исчерпывает пространство массива.
public void extendArray() {
String[] items2 = new String[items.length + 1];
for (int j = 0; j < items.length; j++) {
items2[j] = items[j];
}
items = items2;
}