Vetor

7 respostas
V

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++){     
		     String aux = JOptionPane.showInputDialog(null,"Digite N° para posição " +i+ " do 1°Vetor:");     
		     vet0[i] = Integer.parseInt(aux);     
		   }
		 for(j=0; j<5; j++){     
		     String aux = 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];
			   }
			   else if (m % 2 == 1){
				   
				   vet2[m] = vet1[j];
			   }                  
			       
			   System.out.print(vet2[m]);
			   }

7 Respostas

R

VictorFarion,
o seu erro está aqui:

else if (m % 2 == 1){

deixe apenas assim:

else{

Blz?

V

Renato_natos:
VictorFarion,
o seu erro está aqui:

else if (m % 2 == 1){

deixe apenas assim:

else{

Blz?

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:

else if (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
int vet0[] = new int[5];                

for (int i = 0; i < 5; i++) {
    String aux = JOptionPane.showInputDialog(null,
            "Digite N° para posição " + i + " do 1°Vetor:");
    vet0[i] = Integer.parseInt(aux);
}

int vet1[] = new int[5];
for (int i = 0; i < 5; i++) {
    String aux = JOptionPane.showInputDialog(null,
            "Digite N° para posição " + i + " do 2°Vetor:");
    vet1[i] = Integer.parseInt(aux);
}

int i = 0;
int j = 0;
int vet2[] = new int[10];
for (int m = 0; m < 10; m++) {
    if (m % 2 == 0) {
        vet2[m] = vet0[i];
        i++;
    } else if (m % 2 == 1) {  //Melhor seria só else, como o colega mostrou.
        vet2[m] = vet1[j];
        j++;
    }

    System.out.print(vet2[m]);
}
V

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
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.

int vet0[] = new int[5];
		
		for (int i = 0; i < 5; i++) {   
		    String aux = JOptionPane.showInputDialog(null,   
		            "Digite N° para posição " + i + " do 1°Vetor:");   
		    vet0[i] = Integer.parseInt(aux);   
		}
		int vet1[] = new int[5];   
		for (int i = 0; i < 5; i++) {   
		    String aux = JOptionPane.showInputDialog(null,   
		            "Digite N° para posição " + i + " do 2°Vetor:");   
		    vet1[i] = Integer.parseInt(aux);   
		}   
		int num2[] [] = new int [5][2];
		
		for (int i = 0; i < 5; i ++){
		       
	    	  for (int j = 0;j < 2;j++){
	    		
	    		  num2[i][j]= vet0[i]; // deixei sem colocar o outro vetor pois não sei ao certo como faze-lo
	    		  
	    	   
	    	   System.out.print(num2[i][j]+ "  "); 		   	   
	         	 
	       }
	    	  System.out.println("  ");
	      }
Criado 24 de março de 2009
Ultima resposta 24 de mar. de 2009
Respostas 7
Participantes 3