Я написал следующий код, который берет два массива и ищет индекс первого вхождения каждого значения из первого массива во втором. Например, если first = {15, 10, 18, 17, 15}
и second = {10, 15, 10, 17}
, то на выходе будет массив с длиной, равной first
, который содержит индексы output = {1, 0, -1, 3, 1}
, например, 15 встречается в индексе 1 массива second
, 10 встречается в 0-й индекс, et c. Индекс будет -1, если значение из first
не встречается в second
. Код, который я написал для l oop через массивы, выглядит следующим образом:
public static int[] searchIndexes(int[] first, int[] second) {
int[] indices = new int[first.length];
int index = -1;
for (int i = 0; i < first.length; i ++) {
for (int j = 0; j < second.length; j ++) {
if (first[i] == second[j])
index = j;
}
indices[i] = index;
}
return indices;
}
Однако для данного примера вместо этого выводится {1, 2, 2, 3, 1}
. Я думаю, что понимаю проблему; так как 10 встречается дважды в second
, то записывается индекс второго вхождения, но я не знаю, как это обойти. Размещение оператора break;
после предложения if
, похоже, не исправляет.