Tenho 2 vetores de 5 posições ambas e quero passar esses vetores para somente um de 10. sendo que um vetor A tem que ficar nos indices pares e o vetor B nos indices impares. como faço eu fiz alguma coisa mas sem mto sucesso. Pq não funciona assim oq tem de errado??
for(i=0;i<5;i++){Stringaux=JOptionPane.showInputDialog(null,"Digite N° para posição "+i+" do 1°Vetor:");vet0[i]=Integer.parseInt(aux);}for(j=0;j<5;j++){Stringaux=JOptionPane.showInputDialog(null,"Digite N° para posição "+j+" do 2°Vetor:");vet1[j]=Integer.parseInt(aux);}for(m=0;m<10;m++){if(m%2==0){vet2[m]=vet0[i];}elseif(m%2==1){vet2[m]=vet1[j];}System.out.print(vet2[m]);}
Renato mesmo assim não deu certo ele ainda aparece uma msg de erro está aqui.
“Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 5
at Vetor.vetor1.main(vetor1.java:28)”
ViniGodoy
Renato_natos:
VictorFarion,
o seu erro está aqui:
elseif(m%2==1){
deixe apenas assim:
else{
Blz?
Obviamente o erro não é esse. A condição do else pode até ser inútil (já que se não é um é outro), mas está correta, e não é isso que está atrapalhando o colega.
O problema é que você está não está atualizando os valores de i e de j no segundo for.
ViniGodoy
intvet0[]=newint[5];for(inti=0;i<5;i++){Stringaux=JOptionPane.showInputDialog(null,"Digite N° para posição "+i+" do 1°Vetor:");vet0[i]=Integer.parseInt(aux);}intvet1[]=newint[5];for(inti=0;i<5;i++){Stringaux=JOptionPane.showInputDialog(null,"Digite N° para posição "+i+" do 2°Vetor:");vet1[i]=Integer.parseInt(aux);}inti=0;intj=0;intvet2[]=newint[10];for(intm=0;m<10;m++){if(m%2==0){vet2[m]=vet0[i];i++;}elseif(m%2==1){//Melhor seria só else, como o colega mostrou.vet2[m]=vet1[j];j++;}System.out.print(vet2[m]);}
V
VictorFarion
valew agora fico bacana o meu vetor e me diga uma coisa eu analisei e vi oq tava fazendo de errado… ma diga pq vc colocou os i++ e os j ++ nos ifs??? pois isso que tava errado no meu codigo e não entendi mto o pq dos is.
ViniGodoy
Primeiro, vejamos quem é quem:
No for debaixo, i está armazendo qual posição do vetor 0 devo gravar no vetor 2
j está armazenando que posição do vetor 1 devo gravar no vetor 2
e m está armazendo em que posição do vetor 2 estou.
Agora, quando copio o valor de vetor0[i] para vetor2[m] o que falta dizer ao Java?
Que na próxima vez que entrar nesse for, quero a próxima posição do vetor0. E como digo isso? Fazendo i++.
Dica: Pegue um papel e um lápis e “rode” você mesmo o teste mentalmente, anotando os valores das variáveis. Com o teste de mesa, você facilmente vai ver o que acontece.
V
VictorFarion
ViniGodoy:
Primeiro, vejamos quem é quem:
No for debaixo, i está armazendo qual posição do vetor 0 devo gravar no vetor 2
j está armazenando que posição do vetor 1 devo gravar no vetor 2
e m está armazendo em que posição do vetor 2 estou.
Agora, quando copio o valor de vetor0[i] para vetor2[m] o que falta dizer ao Java?
Que na próxima vez que entrar nesse for, quero a próxima posição do vetor0. E como digo isso? Fazendo i++.
Dica: Pegue um papel e um lápis e "rode" você mesmo o teste mentalmente, anotando os valores das variáveis. Com o teste de mesa, você facilmente vai ver o que acontece.
sim eu entendo vou fazer isso copiar o com lapis e fazer pra fichar bem a lógica mas deu pra entender agora...
vo mandar desse tópico msmo me diga vc pode me dar mais uma mãozinha neh...
eu to fazendo agora 2 vetores de 5 posição e quero passar eles numa matriz [2][5] usando meus vetores eu consegui passar um deles mas não o outro.... vo colar aqui meu código.. se puder me ajudar estaria muito grato.
intvet0[]=newint[5];for(inti=0;i<5;i++){Stringaux=JOptionPane.showInputDialog(null,"Digite N° para posição "+i+" do 1°Vetor:");vet0[i]=Integer.parseInt(aux);}intvet1[]=newint[5];for(inti=0;i<5;i++){Stringaux=JOptionPane.showInputDialog(null,"Digite N° para posição "+i+" do 2°Vetor:");vet1[i]=Integer.parseInt(aux);}intnum2[][]=newint[5][2];for(inti=0;i<5;i++){for(intj=0;j<2;j++){num2[i][j]=vet0[i];// deixei sem colocar o outro vetor pois não sei ao certo como faze-loSystem.out.print(num2[i][j]+" ");}System.out.println(" ");}