Inverter valores de um elemento a outro de vetores

9 respostas
java
Thiago_Lima1011
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

9 Respostas

darlan_machado

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.

Thiago_Lima1011

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…

darlan_machado

A primeira é modificar o uso do atributo j.

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

Thiago_Lima1011

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

Thiago_Lima1011

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

darlan_machado

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.

Thiago_Lima1011
#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

}
darlan_machado

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

Thiago_Lima1011

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

Criado 14 de maio de 2019
Ultima resposta 14 de mai. de 2019
Respostas 9
Participantes 2