Мой профессор дал нам этот код, который создает отсортированный массив int и хочет, чтобы мы преобразовали его в список отсортированных массивов со строками. Это назначение при обслуживании и должно отражать исходный код. Таким образом, я не могу использовать метод size, Collections.sort() или что-либо, что не отражает исходный код.Проблема с преобразованием упорядоченного массива int в список упорядоченных массивов
Мы дали
OrderedIntList() {
a = new int[10];
}
public void insert(int v) {
if(c == 0) {
a[0]= v;
c++;
} else {
int j = 0;
for (int i = 0; i < c; i++, j++) {
if(v < a[i])
break;
}
for (int i = c; i > j; i--) {
a[i] = a[i - 1];
}
a[j]= v;
c++;
}
}
Это то, что я придумал, чтобы преобразовать его в список массива
stringList() {
list = new ArrayList<String>(10);
}
public void insert(String element) {
if(c == 0) {
list.add(0, element);
c++;
} else {
int j = 0;
for (int i = 0; i < c; i++, j++) {
if(element.compareTo(list.get(i)) == -1)
break;
}
for (int i = c; i > j; i--) {
list.set(i, list.get(0));
}
list.set(j, element);
c++;
}
}
Он продолжает бросать исключение на
list.set(i, list.get(0));
Когда Отладка Я вижу, что ArrayList.class бросает исключение, потому что индекс равен размеру. Я не могу придумать решение. Любая помощь будет оценена.
Краткий ответ: вам нужно использовать метод 'add', чтобы увеличить размер списка. Вы не можете сделать это, просто набрав «set» на элементах, которые вы еще не вставили. –
Что сказал @David Уоллес, даже если set разрешил это, ваша строка list.set (i, list.get (0)); не совпадает с [i] = a [i-1], вы делаете что-то вроде [i] = a [0]. Итак, у вас есть две ошибки. Также я просто предполагаю, что вы неверно истолковываете, что list = new ArrayList (10); в этом случае он не составляет список из 10 строк, он просто использует число 10 в качестве «подсказки», чтобы установить начальную емкость (которая не является размером) до 10 –
@ben, это не «подсказка». Это фактический размер. В соответствии с [javadoc] (https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#ArrayList-int-): *** Создает пустой список с указанным начальным емкость *** – Bohemian