Самый простой способ - использовать ArrayList вот так ...
public static int [] insert(int[]x,int item,int position)
{
ArrayList <Integer> list = new ArrayList <> ( Arrays.asList(x) );
list.add(position, item);
return ArrayUtils.toPrimitive(list.toArray(new Integer [0]));
}
Однако, поскольку вы новичок в Java, я не предлагаю это решение. Альтернативой здесь является решение без ArrayList
...
public static int[] insert(int [] oldArray, int value, int insertIndex)
{
int [] newArray = new int[oldArray.length + 1];
for(int index = 0; index < newArray.length - 1; ++index)
{
newArray[index < insertIndex ? index : index + 1] = oldArray[index];
}
newArray[insertIndex] = value;
return newArray;
}
Некоторые пояснения: сначала вы создаете второй массив с еще одним элементом, чем исходный элемент. Во-вторых, вы инициализируете все слоты значениями из исходного массива. Если счетчик равен позиции, в которую должно быть вставлено значение, этот алгоритм пропускает этот слот. После завершения цикла вы инициализируете слот в позиции вставки с заданным значением.