Vetores

Alguém poderia me ajudar?
Leia um vetor de inteiros de 16 posições e troque os 8 primeiros valores pelos 8 últimos e vice-e-versa. Não pode criar vetor auxiliar. Escreva ao final o vetor obtido.
while (i < array.length) {
System.out.println(“Digite um valor”);
int v = s.nextInt();
while (i < 8) {
array[i] = v;
array[i + 8] = array[i];
v = array[i]; // não entendi porque eu tive que colocar novamente isso

		}

		i++;

}
Tentei fazer dessa maneira mas não deu certo e também não consegui compreender a lógica direito.

Essa lógica aí está errada.

Primeiro você vai ter um laço para preencher os elementos do seu array:

int[] array = new int[16];
for (int posicao =0; posicao < array.length; posicao++) {
    System.out.print("Digite o valor da posição " + posicao + ": ");
    array[posicao] = Integer.parseInt(scanner.nextLine());
}
System.out.println("Conteúdo do array:\n" + Arrays.toString(array));

Depois você vai iterar esse array até a metade trocando primeira posição pela última, a segunda pela penúltima, a terceira pela antepenúltima e assim sucessivamente.

int primeiro = 0;
int meio = array.lenth / 2;
int ultimo = array.length -1;
for (int i = primeiro, f = ultimo; i < meio; i++, f--) {
    int temp = array[i]; // armazena o valor da posicao do inicio numa variável temporária
    array[i] = array[f]; // substitui o valor da posicao do inicio com o valor da posição do final
    array[f] = temp;     // substitui o valor da posicao do final com o valor da variável temporária
}
System.out.println("Conteúdo do array:\n" + Arrays.toString(array));