Vetores

Faça um programa que leia dados de dois vetores A e B, com 10 elementos
cada. Crie um vetor C, com 20 elementos, que é a junção de A e B.

já tentei da várias formas mas nunca dá certo, sempre ocorre um erro:

“Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 10
at Aula06ListadeRevisao.exercicio03.main(exercicio03.java:38)”

public static void main(String[] args) {

	
	Scanner scan = new Scanner(System.in);
	
	int[] vetor10 = new int[10];
	
	int[] vetorA = new int[vetor10.length];
	int[] vetorB = new int[vetor10.length];
	
	int[] vetor20 = new int[20];
	
	int[] vetorC = new int[vetor20.length];
	
	
	for (int i = 0; i < vetorA.length; i++) {
		
		System.out.println("Digite o valor do VETOR A da posição: "+(i+1));
		vetorA[i] = scan.nextInt();

	}
	
	for (int i = 0; i < vetorB.length; i++) {
		
		System.out.println("Digite o valor do VETOR B da posição: "+(i+1));
		vetorB[i] = scan.nextInt();

	}
	
	for (int i = 0; i < vetorC.length; i++) {
		
		vetorC[i] = vetorA[i]+vetorB[i];
		
	}
	
	System.out.println("Vetor C = ");
	
	for (int i = 0; i < vetorC.length; i++) {
		
		System.out.println(vetorC[i]);
		
	}		
}	
}

Você não precisa criar esses vetor10 e vetor20 e passar o length para os vetorA, vetorB e vetorC.

int[] vetor10 = new int[10];

int[] vetorA = new int[vetor10.length];
int[] vetorB = new int[vetor10.length];

int[] vetor20 = new int[20];

int[] vetorC = new int[vetor20.length];

Faça a criação direto, já com o tamanho necessário:

int[] vetorA = new int[10];
int[] vetorB = new int[10];
int[] vetorC = new int[20];

Seu erro está nessa parte:

for (int i = 0; i < vetorC.length; i++) {
  vetorC[i] = vetorA[i]+vetorB[i];	
}

Esse laço vai de 0 até 19, sendo que os vetores vetorA e vetorB só tem 10 posições, por isso o erro quando você tenta fazer vetorA[i] e vetorB[i], quando o valor de i é 10.

Outra coisa: se é pra fazer a junção dos dois vetores de 10 posições num vetor de 20, por que você está tentando somar os elementos dos dois vetores? É só passar os valores de um vetor pro outro, algo assim:

for (int i = 0; i < vetorC.length; i++) {
  vetorC[i] = vetorA[i];
  vetorC[i+10] = vetorB[i];	
}

Se é pra somar os valores de vetorA e vetorB, o vetorC não precisa ter 20 posições, apenas 10, que é o tamanho dos vetores vetorA e vetorB. Se fizer isso, seu algoritmo inicial irá funcionar, sem ArrayIndexOutOfBoundsException.

Abraço.

2 curtidas

Fiz dessa forma como você falou porém acontece o mesmo erro… :frowning:

De que forma você fez? Pois eu dei duas sugestões, uma para o caso de somar os valores e outra para o caso de juntar dois vetores de 10 em um de 20.

Em qual linha dá o erro?

Abraço.

1 curtida

fiz dessa forma, eu não quero somar quero apenas juntar os dois vetores em um só

Scanner scan = new Scanner(System.in);

	int[] vetorA = new int[10];
	int[] vetorB = new int[10];
	int[] vetorC = new int[20];
	
	
	for (int i = 0; i < vetorA.length; i++) {
		
		System.out.println("Digite o valor do VETOR A da posição: "+(i+1));
		vetorA[i] = scan.nextInt();

	}
	
	for (int i = 0; i < vetorB.length; i++) {
		
		System.out.println("Digite o valor do VETOR B da posição: "+(i+1));
		vetorB[i] = scan.nextInt();

	}
	
	System.out.println("Vetor C = ");
	
	for (int i = 0; i < vetorC.length; i++) {
		  vetorC[i] = vetorA[i];
		  vetorC[i+10] = vetorB[i];	
	}

o erro aprece na linha 35

vetorC[i+10] = vetorB[i];

Pequeno deslize. Mude o for:

	for (int i = 0; i < vetorC.length; i++) {

Para:

	for (int i = 0; i < vetorA.length; i++) {

Ou para:

	for (int i = 0; i < vetorB.length; i++) {

Abraço.

1 curtida

mano muito obrigado mesmo me salvou!!!