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.
publicstaticvoidmain(String[]args)inti,n,p,im;int[]vlido;int[]vpar;int[]vimpar;n=p=im=0;vlido=newint[10];Scannerteclado=newScanner(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=newint[p];vimpar=newint[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);
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ê.
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ê.
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
N
Nunts_Mahal
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 :
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){inti=0;// só precisa de uma varíavel de controleScannerteclado=newScanner(System.in);int[]vlido=newint[10];int[]vpar=newint[10];int[]vimpar=newint[10];// aqui seus vetores, digamos que cada um seja de 10System.out.println("digite 10 números para o vetor ");for(i=0;i<9;i++){intn=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
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){inti=0;// só precisa de uma varíavel de controleScannerteclado=newScanner(System.in);int[]vlido=newint[10];intvetores[][]=newint[10][10];System.out.println("digite 10 números para o vetor ");for(i=0;i<10;i++){intn=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 !}}