tenho um problema que não consigo resolver
soma += umaPessoa.informeIdade(); esta dando erro
package principal;
publicclassMain{publicstaticvoidmain(String[]p){InterfaceumaInterface=newInterface();PessoaumaPessoa;doublesoma=0;//soma idade das pessoasintnumHom=0;//quantidade de homensintnumFem=0;//quantidade de mulheresdoublemedFem=0;//média femininacharsexo;intquant=umaInterface.pegueQuantPessoa();do{umaPessoa=umaInterface.peguePessoa();soma+=umaPessoa.informeIdade();sexo=umaPessoa.informeSexo();if(sexo=='m'||sexo=='M'){numHom++;}else{numFem++;medFem+=umaPessoa.informeIdade();}quant++;}while(quant>0);doublemedia=soma/quant;doublemediaFem=0;if(numFem>0)mediaFem=medFem/numFem;umaInterface.mostreResul(media,medFem,numHom);}}
Amigo, primeiro por favor use as tags code no seu código, assim fica difícil analisar.
alex88
packageprincipal;publicclassMain{publicstaticvoidmain(String[]p){InterfaceumaInterface=newInterface();PessoaumaPessoa;doublesoma=0;//soma idade das pessoas intnumHom=0;//quantidade de homens intnumFem=0;//quantidade de mulheres doublemedFem=0;//média feminina charsexo;intquant=umaInterface.pegueQuantPessoa();do{umaPessoa=umaInterface.peguePessoa();soma+=umaPessoa.informeIdade();sexo=umaPessoa.informeSexo();if(sexo=='m'||sexo=='M'){numHom++;}else{numFem++;medFem+=umaPessoa.informeIdade();}quant++;}while(quant>0);doublemedia=soma/quant;doublemediaFem=0;if(numFem>0)mediaFem=medFem/numFem;umaInterface.mostreResul(media,medFem,numHom);}}
edimarakika
Errrr…
O que vc realmente quer?? Oo
Quero dizer, o que o programa deveria fazer?? e o que há de errado?
alex88
O programa deve contar a quantidade de homens, quantidade de mulheres, idade média de todos e idade médias das mulheres
Exception in thread “main” java.lang.NullPointerException
at principal.Main.main(Main.java:18)
Java Result: 1
packageprincipal;importjavax.swing.JOptionPane;publicclassInterface{PessoaumaPessoa;inttotal,quant,soma,vIdade;StringvSexo;publicintpegueQuantPessoa(){StringnumeroLido;numeroLido=JOptionPane.showInputDialog("digite quantas pessoas deseja processar ");quant=Integer.parseInt(numeroLido);total=total+quant;returntotal;}publicPessoapeguePessoa(){intidade=vIdade;while(total>=1){vSexo=JOptionPane.showInputDialog("digite o sexo da pessoa ");vIdade=Integer.parseInt(JOptionPane.showInputDialog("digite a idade da pessoa "));total--;}returnumaPessoa;}publicvoidmostreResul(doublemedia,doublemedFem,intnumHom){System.out.print("idade média das pessoas "+media);if(medFem>=0)System.out.println("idade média feminina "+medFem);elseSystem.out.println("nenhuma mulher");System.out.println("quantidade de homens "+numHom);}}
a classe pessoa é mais simples, se precisar eu coloco aqui
obrigado
adriano_si
Cara… precisa da pessoa sim, afinal o método informeIdade() deve estar lá e precisamos saber o que ele retorna.
FelipeGalli
Post a classe Pessoa ou seus métodos.
lina
Oi,
O problema esta no método peguePessoa() que retorna um objeto “nullo”.
Tchauzin!
lina
Oi,
Na chamada:
umaPessoa = umaInterface.peguePessoa();
Ele faz uso da função peguePessoa().
Essa função esta definida como:
publicPessoapeguePessoa(){
intidade=vIdade;while(total>=1){
vSexo=JOptionPane.showInputDialog("digite o sexo da pessoa ");vIdade=Integer.parseInt(JOptionPane.showInputDialog("digite a idade da pessoa "));total--;}
returnumaPessoa;}
Esta por sua vez, retorna um objeto umaPessoa, que foi declarada no inicio da classe assim:
Porém a variavel umaPessoa está nula e não conseguira acessar o método informeIdade().
Tchauzin!
A
Astork
Acho que o post está um pouco bagunçado..
No método peguePessoa, está retornando uma Pessoa, que é atributo da classe Interface, porem em momento algum você instancia esta classe Pessoa.
Veja
publicPessoapeguePessoa(){intidade=vIdade; while(total>=1){vSexo=JOptionPane.showInputDialog("digite o sexo da pessoa "); vIdade=Integer.parseInt(JOptionPane.showInputDialog("digite a idade da pessoa ")); total--; }returnumaPessoa; << RETORNA A REFERENCIA DA PESSOA DECLARADA COMO ATRIBUTO DA CLASSE}
Atributo da classe
Pessoa umaPessoa;
Mas aonde é instanciado esta referencia umaPessoa? não encontrei no seu código e provavelmente é isto que da o erro de NullPointer.
Pois o peguePessoa está retornando uma referencia NULL,
logo a operacao soma += umaPessoa.informeIdade(); dá erro.
OBS: Como dica, é importante você aprender a utilizar o debug da IDE que você utiliza, pois erros do tipo NullPointer, são faceis de ser identificados !!!
Att
A
Astork
Nossa, nem da tempo de responder o post, ja responderam
Att
lina
Astork:
Nossa, nem da tempo de responder o post, ja responderam