Inverter valores de um elemento a outro de vetores

Eu tenho esse código em Java que quero inverter nos vetores pedidos de A e quero inverter em B, porém está apresentando erro:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: -1
at br.com.tlmtech.livro.ExercicioH.main(ExercicioH.java:20)
Segue o código abaixo:
package br.com.tlmtech.livro;

import javax.swing.JOptionPane;

public class ExercicioH {

public static void main(String[] args) {

	int[] a = new int[20];
	int[] b = new int[20];
	int j = 19, i, n = 0;
	for (i = 0;i < 20;i++){
		n++; 
		a[i] = Integer.parseInt(JOptionPane.showInputDialog("Informe o " +n +"º numero para A.:"));
		b[j] = a[i];
		j--;
    }
	StringBuilder mensagem = new StringBuilder("Valores de A e B:\n");
    for (i = 0;i<20;i++){
    	mensagem.append("A[" + i + "] = " + a[i] + " \tB[" + i + "] = " + b[j] + "\n");
	}
	System.out.println(mensagem);
}

}
Alguém poderia me ajudar, o vetor a[0] precisa estar no b[19], o lance está na questão dos arrays que começa em 0, no C eu consegui, porém no Java aparece esse erro

Vocẽ inicializa a variável j com valor 19. Itera sobre o array, subtraindo uma unidade do valor de j em cada iteração.
Quando chega no último laço, já está zerado.
Após a primeira execução do laço de repetição, estoura a exceção, pois, não existem arrays e/ou listas com a posição -1.

Você teria alguma sugestão de código? Eu fiz com o Visualg, Pascal e C e funcionaram, eu peguei o raciocínio, foi tudo dentro de um único for…

A primeira é modificar o uso do atributo j.

Isso é java, amigo. Tem suas peculiaridades. O erro é bem claro.

Então é necessário criar um outro for, para atribuição do a[i] aumentando e o b[i] diminuindo fazendo amarrando isso

Como você faria com relação a esse código para que exiba?

Mostra o código que você fez em C. Eu não consigo entender como o j ficou negativo e, mesmo assim, não quebrou teu código.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main ()
{
int a[20];
int b[20];
int j = 19, i, n = 0;
for (i = 0;i < 20;i++){
n++;
printf(“Informe o %d. numero para A.: “,n);
scanf(”%d”,&a[i]);
b[j] = a[i];
j–;
}
printf("\n");
printf(“Valores de A e B:\n”);
for (i = 0;i<20;i++){
printf(“A[%d] = %d\t B[%d] = %d\n”,i,a[i],i,b[i]);
}
printf("\n----------------FIM---------------------");
getch(); //esperar por um fim
}

Jogo do 1 erro. Encontre a diferença e resolva o problema.

Pronto, resolvi o problema,
Agora eu vi, :smile:
Que bobeira…desculpe o obrigado.