Armazenar numeros lidos no vetor lido e depois distribui-los, em vetores, par e impar?

7 respostas
karlaursola

ola pessoal!
sou iniciante em java.
e tenho um programa que não sei como ele esta dando erro na execução.

Ai esta o codigo:

// CRIE UM PROGRAMA QUE LEIA 10 NUMEROS, ARMAZENE-OS EM UM VETOR VLIDO.
//DEPOIS CRIE OUTROS VETORES E ARMAZENE OS NUMEROS PARES NO VETOR VPAR. E OS NUMEROS
IMPARES NO VETOR VIMPAR.

public static void main(String[] args) 
                
		int i,n,p,im;
		
		int []vlido;
		int []vpar;
		int []vimpar;
		
		n=p=im=0;

		vlido=new int[10];
		
		Scanner teclado = new Scanner(System.in);
		
		for(i=0; i<9;i++){
			
			System.out.println("digite um n ");
			n = teclado.nextInt();

			 vlido[i]=n;
			 
			 }//fim para
		
		//inicialização dos vetores		
		vpar=new int[p];
		vimpar= new int[im];

		
		do{
			for(i=0;i<9;i++){

				if(vlido[i]%2==0){

					vpar[p]=vlido[i]; 
					p++;
				 }//fim if
                        	}//fim for
			
		}while((vpar[p]!=0)&&(vimpar[im]!=0));
		
		
		System.out.println("o vetor de numeros lidos sao: " +vlido[i]);
		System.out.println(" os numeros pares sao: " +p);
		System.out.println("  os numeros impares sao: " +im);

DESDE JA AGRADEÇO

7 Respostas

Henrique_Fernandes

Qual o erro q ta dando no seu codigo??

coloca ele ai pra a gente dar uma olhada blz?

valeusss!!

karlaursola

o problema é que no fim de digitar os 10 numeros, ele apresenta isso logo abaixo dos numeros:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 5
at lista10_ex5.main(lista10_ex5.java:34)

e os vetores par e impar não recebem os valores digitados que o vlido lê.

:slight_smile:

Roger75

karlaursola:
o problema é que no fim de digitar os 10 numeros, ele apresenta isso logo abaixo dos numeros:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 5
at lista10_ex5.main(lista10_ex5.java:34)

e os vetores par e impar não recebem os valores digitados que o vlido lê.

:slight_smile:

Esse erro ocorre geralmente quando você quer pegar ou setar um valor de um array numa posição inexistente.

Por exemplo, se você tem um array de 10 posições e quer pegar da posição 11 (não existe no array)

karlaursola

hum…

e vc tem como me explicar isso?

brigadu :slight_smile:

N

Flor primeiro você não importou o Java.util.Scanner ; como poderia ler então ?
ushushushs, tem outras coisas erradas, no mais eu mostro uma solução :

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        
         int i = 0; // só precisa de uma varíavel de controle
         Scanner teclado = new Scanner(System.in);
         int []vlido= new int [10];
         int []vpar = new int [10];
         int []vimpar = new int [10]; // aqui seus vetores, digamos que cada um seja de 10
         
       
System.out.println("digite 10 números para o vetor ");
    for(i=0; i<9;i++){   
    int n = teclado.nextInt();
     vlido[i]=n;
     

             if (vlido[i] % 2 ==0 ) {
                 vpar[i]= vlido [i];
             }
             else {
                 vimpar[i]= vlido [i]; //pode fazer o teste direto , mas como você n colocou o tamanho do vetor,
                                                //tem que inicializar o vetor primeiro pra depois fazer isso
             }

              }
         System.out.print("o vetor de números lidos é: " );
         for (i=0; i<9; i++){
             System.out.println (vlido[i]);
         }
         System.out.print("O vetor de números pares é: ");
         for (i=0; i<vpar.length; i++) {
             System.out.println (vpar[i]);
         }
         System.out.print("O vetor de números ímpares é: ");
         for (i=0; i<vimpar.length; i++){
             System.out.println(vimpar[i]);
            } // escreve a galera e pronto !

}
}

pronto, rode aí como eu coloquei o tamanho do vetor, a saída vai aparecer uns zeros no par e ímpar, foram os espaços sem alocação, se quiser tira-los, apague os [10] de vimpar e vpar e inicialize o vetor :D

beeijo !

karlaursola

Vlw !!

agora ja vi o meu erro!
hehehe

se eu nao conseguisse rodar esse programa. eu iria mal na prova!

bjuS :lol:

Marky.Vasconcelos

Uma solução sem if

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        
         int i = 0; // só precisa de uma varíavel de controle
         Scanner teclado = new Scanner(System.in);
         int []vlido= new int [10];
         int vetores[][] = new int[10][10];
               
System.out.println("digite 10 números para o vetor ");
    for(i=0; i<10;i++){   
    int n = teclado.nextInt();
    vlido[i]=n;
    vetores[vlido[i] % 2][i] = vlido[i];
        }
         System.out.print("o vetor de números lidos é: " );
         for (i=0; i<9; i++){
             System.out.println (vlido[i]);
         }
         System.out.print("O vetor de números pares é: ");
         for (i=0; i<vpar.length; i++) {
             System.out.println (vetores[0][i]);
         }
         System.out.print("O vetor de números ímpares é: ");
         for (i=0; i<vimpar.length; i++){
             System.out.println(vetores[1][i]);
            } // escreve a galera e pronto !

}
}
Criado 16 de junho de 2009
Ultima resposta 16 de jun. de 2009
Respostas 7
Participantes 5