Документация по методу binarySearch
:
Возвращает: индекс ключа поиска, если он содержится в массиве внутри указанный диапазон; в противном случае (-(insertion point) - 1)
.
Метод не обязательно возвращает -1, если совпадения нет: это может быть другое отрицательное число, что вы также можете увидеть при запуске кода. Вы знаете только, что отрицательное число означает, что совпадения не было.
Во-вторых, вы не рассмотрели следующую спецификацию в задаче:
предполагается, что индексация массива запущена из 1.
Итак, измените следующее:
newArr[k] = Arrays.binarySearch(arrtoSearch, arr[k]);
на это:
int res = Arrays.binarySearch(arrtoSearch, arr[k]);
newArr[k] = res < 0 ? -1 : res + 1;