Сейчас я создаю программу, в которой вы объединяете два массива в один. Кажется, он проходит все остальные испытания, кроме этого. Например, вот что показывает мой вывод:
Банан Яблоко Капуста Морковь Груша Апельсиновый горох Брокколи Клубника
* s1 слитно с s2 *
ПРОЙДЕНО:
ОЖИДАЕТСЯ ->
Банан, Яблоко, Капуста, Морковь, Груша, Апельсин, Горох, Брокколи, Клубника
Фактически ->
Банан, Яблоко, Капуста, Морковь, Груша, Апельсин, Горох, Брокколи, Клубника
Новый тест
Банан Яблоко Груша Капуста Морковь Апельсин Клубника ноль
* s1 объединено с s2 * СБОЙ:
ОЖИДАЕТСЯ ->
Банан, яблоко, груша, капуста, морковь, горох, апельсин, клубника, брокколи
АКТУАЛЬНО ->
Банан, яблоко, груша, капуста, морковь, горох, апельсин, клубника
В других тестах брокколи в порядке, но в вывод неудачного теста указан как «ноль» вместо брокколи. Я попытался реализовать для l oop в нижней части моего метода, который должен решить эту проблему, установив любые нулевые элементы списка во временную копию списка, но похоже, что я делаю это неправильно.
public void merge(ArrayMerge<? extends R> collection, int offset) {
int offsetCounter = 0;
int thisCounter = 0;
int collectionCounter = 0;
R[] currentArray = arr;
R[] templist = (R[]) new Object[this.size() + collection.size()];
for (int i = 0; i < templist.length; i++) {
if (offsetCounter < offset) {
try {
templist[i] = this.get(thisCounter++);
offsetCounter++;
} catch (Exception e) {
}
} else if (offsetCounter >= offset) {
try {
templist[i] = collection.get(collectionCounter++);
offsetCounter++;
} catch (Exception e) {
}
}
if (offsetCounter == offset * 2) {
offsetCounter = 0;
}
System.out.println(templist[i]);
}
for (int i = 0; i < templist.length; i++) {
if (templist[i] != null) {
this.arr[i] = templist[i];
}
}
}