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… 
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!!!